sarah 0.0.4 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/HISTORY.txt +18 -0
- data/lib/doc/_index.html +88 -0
- data/lib/doc/class_list.html +53 -0
- data/lib/doc/css/common.css +1 -0
- data/lib/doc/css/full_list.css +57 -0
- data/lib/doc/css/style.css +338 -0
- data/lib/doc/file_list.html +52 -0
- data/lib/doc/frames.html +28 -0
- data/lib/doc/index.html +88 -0
- data/lib/doc/js/app.js +214 -0
- data/lib/doc/js/full_list.js +173 -0
- data/lib/doc/js/jquery.js +4 -0
- data/lib/doc/method_list.html +52 -0
- data/lib/doc/top-level-namespace.html +102 -0
- data/lib/sarah.rb +1256 -218
- data/sarah.gemspec +2 -2
- data/test/05class2.rb +49 -0
- data/test/06instance2.rb +41 -0
- data/test/07inst_attr.rb +84 -0
- data/test/08set_ops.rb +36 -0
- data/test/09delete_unset.rb +135 -0
- data/test/10count_size.rb +36 -0
- data/test/11each.rb +49 -0
- data/test/12search.rb +52 -0
- data/test/13misc.rb +155 -0
- data/test/14slice.rb +55 -0
- metadata +36 -3
data/sarah.gemspec
CHANGED
data/test/05class2.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'sarah'
|
3
|
+
|
4
|
+
# Class methods since 2.0.0
|
5
|
+
|
6
|
+
class TestSarah_05 < MiniTest::Unit::TestCase
|
7
|
+
|
8
|
+
def test_cmethod
|
9
|
+
[ :[], :new, :try_convert
|
10
|
+
].each { |method| assert_respond_to Sarah, method }
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_copy
|
14
|
+
s1 = Sarah[ 1, 2, 5 => 'five', :ten => 10 ]
|
15
|
+
s1.default = false
|
16
|
+
s1.negative_mode = :actual
|
17
|
+
s2 = Sarah.new s1
|
18
|
+
|
19
|
+
assert_equal s1.to_a, s2.to_a, 's1.to_a == s2.to_a'
|
20
|
+
assert_equal s1.to_h, s2.to_h, 's1.to_h == s2.to_h'
|
21
|
+
assert_equal :actual, s2.negative_mode, ':actual mode copied'
|
22
|
+
assert_equal false, s2.default, 'default copied'
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_new
|
26
|
+
assert_equal [0, 'one', 5 => 'five', :ten => 10 ],
|
27
|
+
Sarah[0, 'one', 5 => 'five', :ten => 10 ].to_a,
|
28
|
+
'Failed to create Sarah literal'
|
29
|
+
|
30
|
+
assert_equal [0, 'one', {}],
|
31
|
+
Sarah.new(:from => [0, 'one']).to_a,
|
32
|
+
'Failed to create Sarah from array'
|
33
|
+
|
34
|
+
assert_equal [0, 'one', 5 => 'five', :ten => 10 ],
|
35
|
+
Sarah.new(:from => { 0 => 0, 1 => 'one', 5 => 'five', :ten => 10 }).
|
36
|
+
to_a, 'Failed to create Sarah from hash'
|
37
|
+
|
38
|
+
assert_equal [0, 'one', {}],
|
39
|
+
Sarah.try_convert([0, 'one']).to_a,
|
40
|
+
'Failed to try_convert array to Sarah'
|
41
|
+
|
42
|
+
assert_equal [0, 'one', 5 => 'five', :ten => 10 ],
|
43
|
+
Sarah.try_convert({ 0 => 0, 1 => 'one', 5 => 'five', :ten => 10 }).
|
44
|
+
to_a, 'Failed to try_convert hash to Sarah'
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
# END
|
data/test/06instance2.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'sarah'
|
3
|
+
|
4
|
+
# Instance methods since 2.0,0
|
5
|
+
|
6
|
+
class TestSarah_06 < MiniTest::Unit::TestCase
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@s = Sarah.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_imethods_accessors
|
13
|
+
[
|
14
|
+
:default, :default=, :default_proc, :default_proc=,
|
15
|
+
:negative_mode, :negative_mode=
|
16
|
+
].each { |method| assert_respond_to @s, method }
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_imethods_user_api
|
20
|
+
[
|
21
|
+
:&, :|, :+, :concat, :-, :<<, :push, :==, :eql?,
|
22
|
+
:[], :at, :[]=, :store, :append!, :assoc,
|
23
|
+
:clear, :collect!, :map!, :compact!, :count,
|
24
|
+
:delete_at, :delete_key, :delete_if, :delete_value,
|
25
|
+
:each, :each_index, :each_key, :each_pair, :empty?,
|
26
|
+
:fetch, :find_index, :index, :first, :flatten!,
|
27
|
+
:has_key?, :key?, :member?, :has_value?, :include?, :value?,
|
28
|
+
:insert!, :inspect, :to_s, :join, :key, :keys,
|
29
|
+
:last, :length, :size, :merge!, :update, :new_similar,
|
30
|
+
:pairs_at, :pop, :rehash, :replace, :reverse!, :reverse_each,
|
31
|
+
:rindex, :rotate!, :sample, :select, :set, :set_kv, :set_pairs,
|
32
|
+
:shift, :shuffle, :shuffle!, :slice, :slice!, :sort, :sort!,
|
33
|
+
:to_a, :to_h, :uniq, :uniq!, :unset_at, :unset_key,
|
34
|
+
:unset_if, :unset_value, :unshift,
|
35
|
+
:values, :values_at, :zip
|
36
|
+
].each { |method| assert_respond_to @s, method }
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
# END
|
data/test/07inst_attr.rb
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'sarah'
|
3
|
+
|
4
|
+
class TestSarah_07 < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def setup; @s = Sarah.new; end
|
7
|
+
|
8
|
+
def test_defaults
|
9
|
+
@s.default = true
|
10
|
+
assert_equal true, @s.default, 'Set default to true'
|
11
|
+
@s.default = false
|
12
|
+
assert_equal false, @s.default, 'Change default to false'
|
13
|
+
|
14
|
+
begin
|
15
|
+
@s.default_proc = Proc.new { |s, k| true }
|
16
|
+
rescue
|
17
|
+
assert false, 'Failed to set valid default_proc'
|
18
|
+
else
|
19
|
+
assert true, 'Succeeded in setting valid default_proc'
|
20
|
+
assert_kind_of Proc, @s.default_proc, 'Default_proc is a Proc'
|
21
|
+
end
|
22
|
+
|
23
|
+
begin
|
24
|
+
@s.default_proc = nil
|
25
|
+
rescue
|
26
|
+
assert false, 'Failed to set nil default_proc'
|
27
|
+
else
|
28
|
+
assert_equal nil, @s.default_proc,
|
29
|
+
'Succeeded in setting nil default_proc'
|
30
|
+
end
|
31
|
+
|
32
|
+
begin
|
33
|
+
@s.default_proc = true
|
34
|
+
rescue TypeError
|
35
|
+
assert true, 'Got TypeError for invalid default_proc'
|
36
|
+
rescue
|
37
|
+
assert false, 'Got incorrect exception for invalid default_proc'
|
38
|
+
else
|
39
|
+
assert false, 'No exception raised for invalid default_proc'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_neg_mode
|
44
|
+
@s.negative_mode = :ignore
|
45
|
+
@s.set 1, 2
|
46
|
+
|
47
|
+
assert_equal [1, 2], @s.values, 'Two values are correct'
|
48
|
+
assert_equal [0, 1], @s.keys, 'Two keys are correct'
|
49
|
+
assert_equal nil, @s[2], 'Key too big returns nil'
|
50
|
+
assert_equal nil, @s[-3], 'Ignore key too small returns nil'
|
51
|
+
|
52
|
+
@s.negative_mode = :error
|
53
|
+
begin
|
54
|
+
value = @s[-3]
|
55
|
+
rescue IndexError
|
56
|
+
assert true, 'Error key too small raises IndexError'
|
57
|
+
rescue
|
58
|
+
assert false, 'Error key too small raises incorrect exception'
|
59
|
+
else
|
60
|
+
assert false, 'Error key too small does not raise an exception'
|
61
|
+
end
|
62
|
+
|
63
|
+
@s.negative_mode = :actual
|
64
|
+
assert_equal nil, @s[-3], 'Negative key before set returns nil'
|
65
|
+
@s[-3] = '-3'
|
66
|
+
assert_equal '-3', @s[-3], 'Negative key after set is OK'
|
67
|
+
|
68
|
+
@s.negative_mode = :ignore
|
69
|
+
assert_equal :actual, @s.negative_mode,
|
70
|
+
'Neg mode :ignore with negative key is ignored'
|
71
|
+
|
72
|
+
@s.negative_mode = :error
|
73
|
+
assert_equal :actual, @s.negative_mode,
|
74
|
+
'Neg mode :error with negative key is ignored'
|
75
|
+
|
76
|
+
@s.shift
|
77
|
+
@s.negative_mode = :ignore
|
78
|
+
assert_equal :ignore, @s.negative_mode,
|
79
|
+
'Neg mode :ignore after neg key removed is accepted'
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
# END
|
data/test/08set_ops.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'sarah'
|
3
|
+
|
4
|
+
class TestSarah_08 < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@s1 = Sarah[1, 3, 4, 5, 'a', 'c', 'd', 'e', 20 => 'x', 21 => 'y']
|
8
|
+
@a1 = [1, 3, 4, 5, 'a', 'c', 'd', 'e', 'x', 'y']
|
9
|
+
@s2 = Sarah[1, 2, 3, 5, 'a', 'b', 'c', 'e', 20 => 'x', 22 => 'z']
|
10
|
+
@a2 = [1, 2, 3, 5, 'a', 'b', 'c', 'e', 'x', 'z']
|
11
|
+
|
12
|
+
@s3 = Sarah[ :a => ?a, :b => ?b, :c => ?c, :d => ?d, :x => 1 ]
|
13
|
+
@s4 = Sarah[ :b => ?b, :d => ?d, :e => ?e, :x => 2 ]
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_inter
|
17
|
+
assert_equal((@a1 & @a2), (@s1 & @s2).values, 'Sarah ary intersection')
|
18
|
+
assert_equal({ :b => ?b, :d => ?d }, (@s3 & @s4).to_h,
|
19
|
+
'Sarah rnd intersection')
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_union
|
23
|
+
assert_equal((@a1 | @a2), (@s1 | @s2).values, 'Sarah ary union')
|
24
|
+
assert_equal({ :a => ?a, :b => ?b, :c => ?c, :d => ?d,
|
25
|
+
:e => ?e, :x => 2}, (@s3 | @s4).to_h, 'Sarah rnd union')
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_minus
|
29
|
+
assert_equal((@a1 - @a2), (@s1 - @s2).values, 'Sarah ary difference')
|
30
|
+
assert_equal({ :a => ?a, :c => ?c, :x => 1 }, (@s3 - @s4).to_h,
|
31
|
+
'Sarah rnd difference')
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
# END
|
@@ -0,0 +1,135 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'sarah'
|
3
|
+
|
4
|
+
class TestSarah_09 < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def test_clear
|
7
|
+
assert_equal({}, Sarah[ ?a, :b => ?c ].clear.to_h, 'clear :all')
|
8
|
+
assert_equal({ :b => ?c }, Sarah[ ?a, :b => ?c ].clear(:ary).to_h,
|
9
|
+
'clear :ary')
|
10
|
+
assert_equal({ 0 => ?a }, Sarah[ ?a, :b => ?c ].clear(:rnd).to_h,
|
11
|
+
'clear :rnd')
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_delete_at
|
15
|
+
s = Sarah[ 0, 1, 2, 5 => 5, 7 => 7, 9 => 9,
|
16
|
+
:a => ?a, :b => ?b, :c => ?c ]
|
17
|
+
|
18
|
+
assert_equal ?b, s.delete_at(:b), 'delete_at :b'
|
19
|
+
assert_equal 7, s.delete_at(7), 'delete_at 7'
|
20
|
+
assert_equal 1, s.delete_at(1), 'delete_at 1'
|
21
|
+
assert_equal [ 0, 2, 4 => 5, 7 => 9, :a => ?a, :c => ?c ], s.to_a,
|
22
|
+
'after delete_at x3'
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_delete_at_nma
|
26
|
+
s = Sarah.new([ 0, 1, 2, 5 => 5, 7 => 7, 9 => 9,
|
27
|
+
:a => ?a, :b => ?b, :c => ?c ], :negative_mode => :actual)
|
28
|
+
|
29
|
+
assert_equal ?b, s.delete_at(:b), 'NMA delete_at :b'
|
30
|
+
assert_equal 7, s.delete_at(7), 'NMA delete_at 7'
|
31
|
+
assert_equal 1, s.delete_at(1), 'NMA delete_at 1'
|
32
|
+
assert_equal [ 0, 2 => 2, 5 => 5, 9 => 9, :a => ?a, :c => ?c ], s.to_a,
|
33
|
+
'after NMA delete_at x3'
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_delete_if
|
37
|
+
s = Sarah[1, 2, 3, 5 => 1, 6 => 2, 7 => 3, :a => 1, :b => 2, :c => 3]
|
38
|
+
|
39
|
+
s.delete_if(:ary) { |v, k| v == 1 }
|
40
|
+
assert_equal [2, 3, 4 => 2, 5 => 3, :a => 1, :b => 2, :c => 3 ],
|
41
|
+
s.to_a, 'delete_if :ary == 1'
|
42
|
+
|
43
|
+
s.delete_if(:rnd) { |v, k| v == 2 }
|
44
|
+
assert_equal [2, 3, 4 => 2, 5 => 3, :a => 1, :c => 3 ],
|
45
|
+
s.to_a, 'delete_if :rnd == 2'
|
46
|
+
|
47
|
+
s.delete_if { |v, k| v == 3 }
|
48
|
+
assert_equal [2, 3 => 2, :a => 1 ], s.to_a, 'delete_if == 3'
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_delete_val
|
52
|
+
s = Sarah[1, 2, 3, 4, 6=>1, 7=>2, 8=>3, 9=>4, :a=>2, :b=>3 ]
|
53
|
+
s.delete_value 2, :rnd
|
54
|
+
assert_equal [1,2,3,4,1,2,3,4,3], s.values, 'delete_value 2, :rnd'
|
55
|
+
s.delete_value 1, :ary
|
56
|
+
assert_equal [2,3,4,2,3,4,3], s.values, 'delete_value 1, :ary'
|
57
|
+
s.delete_value 3
|
58
|
+
assert_equal [2,4,2,4], s.values, 'delete_value 3'
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_pop
|
62
|
+
s = Sarah[ 0, 5 => 1, 7 => 2, 9 => 3, :a => ?a]
|
63
|
+
a = s.pop 2
|
64
|
+
assert_equal [ 2, 3 ], a, 'spr pop 2 ressult'
|
65
|
+
a = s.pop 2
|
66
|
+
assert_equal [ 0, 1 ], a, 'seq/spr pop 2 result'
|
67
|
+
assert_equal [ :a => ?a ], s.to_a, 'sarah after popping'
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_shift
|
71
|
+
s = Sarah[ 0, 1, 2, 5 => 5, 7 => 7, 9 => 9,
|
72
|
+
:a => ?a, :b => ?b, :c => ?c ]
|
73
|
+
|
74
|
+
v = s.shift
|
75
|
+
assert_equal 0, v, 'seq shift result'
|
76
|
+
assert_equal [ 1, 2, 4 => 5, 6 => 7, 8 => 9, :a => ?a, :b => ?b,
|
77
|
+
:c => ?c ], s.to_a, 'sarah after shift'
|
78
|
+
|
79
|
+
a = s.shift 2
|
80
|
+
assert_equal [ 1, 2 ], a, 'seq shift 2 result'
|
81
|
+
assert_equal [ 2 => 5, 4 => 7, 6 => 9, :a => ?a, :b => ?b,
|
82
|
+
:c => ?c ], s.to_a, 'sarah after shift 2'
|
83
|
+
|
84
|
+
s = Sarah[ 0, 5 => 1, 7 => 2, 9 => 3, :a => ?a]
|
85
|
+
a = s.shift 2
|
86
|
+
assert_equal [ 0, 1 ], a, 'seq/spr shift 2 result'
|
87
|
+
a = s.shift 2
|
88
|
+
assert_equal [ 2, 3 ], a, 'spr shift 2 ressult'
|
89
|
+
assert_equal [ :a => ?a ], s.to_a, 'sarah after shifting'
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_unset_at
|
93
|
+
s = Sarah[ 0, 1, 2, 5 => 5, 7 => 7, 9 => 9,
|
94
|
+
:a => ?a, :b => ?b, :c => ?c ]
|
95
|
+
|
96
|
+
assert_equal ?b, s.unset_at(:b), 'unset_at :b'
|
97
|
+
assert_equal 7, s.unset_at(7), 'unset_at 7'
|
98
|
+
assert_equal 1, s.unset_at(1), 'unset_at 1'
|
99
|
+
assert_equal [ 0, 2 => 2, 5 => 5, 9 => 9, :a => ?a, :c => ?c ], s.to_a,
|
100
|
+
'after unset_at x3'
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_unset_if
|
104
|
+
s = Sarah[1, 2, 3, 5 => 1, 6 => 2, 7 => 3, :a => 1, :b => 2, :c => 3]
|
105
|
+
|
106
|
+
s.unset_if(:ary) { |v, k| v == 1 }
|
107
|
+
assert_equal [1 => 2, 2 => 3, 6 => 2, 7 => 3,
|
108
|
+
:a => 1, :b => 2, :c => 3 ], s.to_a, 'unset_if :ary == 1'
|
109
|
+
|
110
|
+
s.unset_if(:rnd) { |v, k| v == 2 }
|
111
|
+
assert_equal [1 => 2, 2 => 3, 6 => 2, 7 => 3, :a => 1, :c => 3 ],
|
112
|
+
s.to_a, 'unset_if :rnd == 2'
|
113
|
+
|
114
|
+
s.unset_if { |v, k| v == 3 }
|
115
|
+
assert_equal [1 => 2, 6 => 2, :a => 1 ], s.to_a, 'unset_if == 3'
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_unset_value
|
119
|
+
s = Sarah[1, 2, 3, 4, 6=>1, 7=>2, 8=>3, 9=>4, :a=>2, :b=>3 ]
|
120
|
+
|
121
|
+
s.unset_value 2, :rnd
|
122
|
+
assert_equal [1, 2, 3, 4, 6 => 1, 7 => 2, 8 => 3, 9 => 4, :b => 3],
|
123
|
+
s.to_a, 'unset_value 2, :rnd'
|
124
|
+
|
125
|
+
s.unset_value 1, :ary
|
126
|
+
assert_equal [1 => 2, 2 => 3, 3 => 4, 7 => 2, 8 => 3, 9 => 4,
|
127
|
+
:b => 3], s.to_a, 'unset_value 1, :ary'
|
128
|
+
|
129
|
+
s.unset_value 3
|
130
|
+
assert_equal [1 => 2, 3 => 4, 7 => 2, 9 => 4], s.to_a, 'unset_value 3'
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
# END
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'sarah'
|
3
|
+
|
4
|
+
class TestSarah_10 < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def test_count
|
7
|
+
s0 = Sarah[ 1, 3, 5 => 1, 6 => 3, :a => 3, :b => 5 ]
|
8
|
+
|
9
|
+
assert_equal 2, s0.count(:ary, 1), 'count :ary, 1'
|
10
|
+
assert_equal 4, s0.count(:ary) { |i| i.odd? }, 'count :ary, odd'
|
11
|
+
assert_equal 1, s0.count(:rnd, 3), 'count :rnd, 3'
|
12
|
+
assert_equal 2, s0.count(:rnd) { |i| i.odd? }, 'count :rnd, odd'
|
13
|
+
assert_equal 3, s0.count(:all, 3), 'count :all, 3'
|
14
|
+
assert_equal 6, s0.count(:all) { |i| i.odd? }, 'count :all, odd'
|
15
|
+
assert_equal 6, s0.count { |i| i.odd? }, 'count odd'
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_size
|
19
|
+
s = Sarah[1, 2, 3, 4, 7 => 5, 8 => 6, :ix => 7]
|
20
|
+
|
21
|
+
assert_equal 4, s.size(:seq), 'size :seq'
|
22
|
+
assert_equal 2, s.size(:spr), 'size :spr'
|
23
|
+
assert_equal 6, s.size(:ary), 'size :ary'
|
24
|
+
assert_equal 1, s.size(:rnd), 'size :rnd'
|
25
|
+
assert_equal 7, s.size(:all), 'size :all'
|
26
|
+
assert_equal 7, s.size, 'size'
|
27
|
+
|
28
|
+
s.unset_value 3
|
29
|
+
assert_equal 2, s.size(:seq), 'size :seq after unset'
|
30
|
+
assert_equal 3, s.size(:spr), 'size :spr after unset'
|
31
|
+
assert_equal 5, s.size(:ary), 'size :ary after unset'
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
# END
|
data/test/11each.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'sarah'
|
3
|
+
|
4
|
+
class TestSarah_11 < MiniTest::Unit::TestCase
|
5
|
+
|
6
|
+
def test_each
|
7
|
+
s = Sarah[1, 2, 5 => 3, 6 => 4, :a => 5, :b => 6]
|
8
|
+
|
9
|
+
h = {}
|
10
|
+
s.each(:seq) { |k, v| h[k] = v }
|
11
|
+
assert_equal({ 0 => 1, 1 => 2 }, h, 'each :seq')
|
12
|
+
|
13
|
+
h.clear
|
14
|
+
s.each(:spr) { |k, v| h[k] = v }
|
15
|
+
assert_equal({ 5 => 3, 6 => 4 }, h, 'each :spr')
|
16
|
+
|
17
|
+
h.clear
|
18
|
+
s.each(:ary) { |k, v| h[k] = v }
|
19
|
+
assert_equal({ 0 => 1, 1 => 2, 5 => 3, 6 => 4 }, h, 'each :ary')
|
20
|
+
|
21
|
+
h.clear
|
22
|
+
s.each(:rnd) { |k, v| h[k] = v }
|
23
|
+
assert_equal({ :a => 5, :b => 6 }, h, 'each :rnd')
|
24
|
+
|
25
|
+
h.clear
|
26
|
+
s.each(:all) { |k, v| h[k] = v }
|
27
|
+
assert_equal s.to_h, h, 'each :all'
|
28
|
+
|
29
|
+
a = []
|
30
|
+
s.reverse_each { |k, v| a << [k, v] }
|
31
|
+
assert_equal [[6, 4], [5, 3], [1, 2], [0, 1]], a, 'reverse_each'
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_pairs_at
|
35
|
+
s = Sarah[1, 2, 5 => 3, 6 => 4, :a => 5, :b => 6]
|
36
|
+
|
37
|
+
assert_equal s.to_h, s.pairs_at(*s.keys), 'to_h matches pairs_at(*keys)'
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_values_at
|
41
|
+
s = Sarah[1, 2, 5 => 3, 6 => 4, :a => 5, :b => 6]
|
42
|
+
|
43
|
+
assert_equal s.values, s.values_at(*s.keys),
|
44
|
+
'values matches values_at(*keys)'
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
# END
|