xqsr3 0.38.2 → 0.39.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -6
  3. data/examples/count_word_frequencies.md +12 -12
  4. data/examples/count_word_frequencies.rb +4 -4
  5. data/lib/xqsr3/array_utilities/join_with_or.rb +47 -47
  6. data/lib/xqsr3/array_utilities.rb +2 -2
  7. data/lib/xqsr3/command_line_utilities/map_option_string.rb +60 -60
  8. data/lib/xqsr3/command_line_utilities.rb +2 -2
  9. data/lib/xqsr3/containers/frequency_map.rb +399 -399
  10. data/lib/xqsr3/containers/multi_map.rb +448 -448
  11. data/lib/xqsr3/containers.rb +3 -3
  12. data/lib/xqsr3/conversion/bool_parser.rb +51 -51
  13. data/lib/xqsr3/conversion/integer_parser.rb +87 -87
  14. data/lib/xqsr3/conversion.rb +3 -3
  15. data/lib/xqsr3/diagnostics/exception_utilities.rb +145 -145
  16. data/lib/xqsr3/diagnostics/exceptions/with_cause.rb +90 -90
  17. data/lib/xqsr3/diagnostics/inspect_builder.rb +80 -80
  18. data/lib/xqsr3/diagnostics.rb +3 -3
  19. data/lib/xqsr3/doc_.rb +130 -130
  20. data/lib/xqsr3/extensions/array/join_with_or.rb +9 -9
  21. data/lib/xqsr3/extensions/enumerable/collect_with_index.rb +12 -12
  22. data/lib/xqsr3/extensions/enumerable/detect_map.rb +35 -35
  23. data/lib/xqsr3/extensions/enumerable/unique.rb +29 -28
  24. data/lib/xqsr3/extensions/hash/deep_transform.rb +1 -1
  25. data/lib/xqsr3/extensions/hash/except.rb +16 -16
  26. data/lib/xqsr3/extensions/hash/has_match.rb +10 -10
  27. data/lib/xqsr3/extensions/hash/match.rb +10 -10
  28. data/lib/xqsr3/extensions/hash/slice.rb +11 -11
  29. data/lib/xqsr3/extensions/hash.rb +1 -1
  30. data/lib/xqsr3/extensions/integer/to_s_grp.rb +118 -0
  31. data/lib/xqsr3/extensions/integer.rb +3 -0
  32. data/lib/xqsr3/extensions/io/writelines.rb +28 -28
  33. data/lib/xqsr3/extensions/kernel/integer.rb +20 -20
  34. data/lib/xqsr3/extensions/kernel/raise_with_options.rb +8 -8
  35. data/lib/xqsr3/extensions/kernel.rb +1 -0
  36. data/lib/xqsr3/extensions/string/ends_with.rb +1 -1
  37. data/lib/xqsr3/extensions/string/map_option_string.rb +4 -4
  38. data/lib/xqsr3/extensions/string/nil_if_empty.rb +1 -1
  39. data/lib/xqsr3/extensions/string/nil_if_whitespace.rb +1 -1
  40. data/lib/xqsr3/extensions/string/quote_if.rb +1 -1
  41. data/lib/xqsr3/extensions/string/starts_with.rb +1 -1
  42. data/lib/xqsr3/extensions/string/to_bool.rb +8 -8
  43. data/lib/xqsr3/extensions/string/to_symbol.rb +1 -1
  44. data/lib/xqsr3/extensions/string/truncate.rb +1 -1
  45. data/lib/xqsr3/extensions/test/unit/assert_eql.rb +10 -7
  46. data/lib/xqsr3/extensions/test/unit/assert_false.rb +9 -6
  47. data/lib/xqsr3/extensions/test/unit/assert_not.rb +9 -6
  48. data/lib/xqsr3/extensions/test/unit/assert_not_eql.rb +10 -7
  49. data/lib/xqsr3/extensions/test/unit/assert_raise_with_message.rb +61 -61
  50. data/lib/xqsr3/extensions/test/unit/assert_subclass_of.rb +10 -7
  51. data/lib/xqsr3/extensions/test/unit/assert_superclass_of.rb +10 -7
  52. data/lib/xqsr3/extensions/test/unit/assert_true.rb +9 -6
  53. data/lib/xqsr3/extensions/test/unit/assert_type_has_instance_methods.rb +39 -36
  54. data/lib/xqsr3/extensions.rb +5 -5
  55. data/lib/xqsr3/hash_utilities/deep_transform.rb +65 -65
  56. data/lib/xqsr3/hash_utilities/key_matching.rb +77 -77
  57. data/lib/xqsr3/hash_utilities.rb +3 -3
  58. data/lib/xqsr3/internal_/test_unit_version_.rb +83 -83
  59. data/lib/xqsr3/io/writelines.rb +122 -120
  60. data/lib/xqsr3/quality/parameter_checking.rb +445 -445
  61. data/lib/xqsr3/quality.rb +2 -2
  62. data/lib/xqsr3/string_utilities/ends_with.rb +59 -59
  63. data/lib/xqsr3/string_utilities/nil_if_empty.rb +28 -28
  64. data/lib/xqsr3/string_utilities/nil_if_whitespace.rb +29 -29
  65. data/lib/xqsr3/string_utilities/quote_if.rb +50 -50
  66. data/lib/xqsr3/string_utilities/starts_with.rb +59 -59
  67. data/lib/xqsr3/string_utilities/to_symbol.rb +75 -75
  68. data/lib/xqsr3/string_utilities/truncate.rb +55 -55
  69. data/lib/xqsr3/string_utilities.rb +8 -8
  70. data/lib/xqsr3/version.rb +12 -12
  71. data/test/performance/frequency_map.rb +12 -12
  72. data/test/scratch/test_assert_raise_with_message.rb +11 -11
  73. data/test/unit/array_utilities/tc_join_with_or.rb +140 -140
  74. data/test/unit/command_line_utilities/tc_map_option_string.rb +18 -18
  75. data/test/unit/containers/tc_frequency_map.rb +591 -591
  76. data/test/unit/containers/tc_multi_map.rb +558 -558
  77. data/test/unit/conversion/tc_integer_parser.rb +72 -72
  78. data/test/unit/conversion/tc_to_bool.rb +25 -25
  79. data/test/unit/diagnostics/exceptions/tc_with_cause.rb +165 -165
  80. data/test/unit/diagnostics/tc_exception_utilities.rb +156 -156
  81. data/test/unit/extensions/enumerable/tc_collect_with_index.rb +14 -14
  82. data/test/unit/extensions/enumerable/tc_detect_map.rb +20 -20
  83. data/test/unit/extensions/enumerable/tc_unique.rb +34 -34
  84. data/test/unit/extensions/hash/tc_deep_transform.rb +22 -22
  85. data/test/unit/extensions/hash/tc_except.rb +28 -28
  86. data/test/unit/extensions/hash/tc_slice.rb +13 -13
  87. data/test/unit/extensions/integer/tc_to_s_grp.rb +60 -0
  88. data/test/unit/extensions/integer/ts_all.rb +12 -0
  89. data/test/unit/extensions/io/tc_writelines.rb +149 -77
  90. data/test/unit/extensions/kernel/tc_integer.rb +75 -75
  91. data/test/unit/extensions/kernel/tc_raise_with_options.rb +155 -155
  92. data/test/unit/extensions/object/tc_inspect.rb +50 -50
  93. data/test/unit/extensions/string/tc_bool.tb +24 -24
  94. data/test/unit/extensions/string/tc_ends_with.rb +53 -53
  95. data/test/unit/extensions/string/tc_map_option_string.rb +15 -15
  96. data/test/unit/extensions/string/tc_nil_if_empty.rb +8 -8
  97. data/test/unit/extensions/string/tc_nil_if_whitespace.rb +8 -8
  98. data/test/unit/extensions/string/tc_quote_if.rb +18 -18
  99. data/test/unit/extensions/string/tc_starts_with.rb +53 -53
  100. data/test/unit/extensions/string/tc_to_symbol.rb +26 -26
  101. data/test/unit/extensions/string/tc_truncate.rb +18 -18
  102. data/test/unit/extensions/test/unit/tc_assert_raise_with_message.rb +16 -16
  103. data/test/unit/extensions/test/unit/tc_assert_subclass_of.rb +9 -9
  104. data/test/unit/extensions/test/unit/tc_assert_superclass_of.rb +9 -9
  105. data/test/unit/hash_utilities/tc_has_match.rb +70 -70
  106. data/test/unit/hash_utilities/tc_match.rb +83 -83
  107. data/test/unit/io/tc_writelines.rb +166 -106
  108. data/test/unit/quality/tc_parameter_checking.rb +389 -389
  109. data/test/unit/string_utilities/tc_truncate.rb +27 -27
  110. data/test/unit/tc_version.rb +15 -15
  111. metadata +6 -2
@@ -11,915 +11,915 @@ include ::Xqsr3::Containers
11
11
 
12
12
  class Test_Xqsr3_Containers_MultiMap < Test::Unit::TestCase
13
13
 
14
- def test_class_operator_subscript_1
14
+ def test_class_operator_subscript_1
15
15
 
16
- mm = MultiMap[]
16
+ mm = MultiMap[]
17
17
 
18
- assert mm.empty?
19
- assert_equal 0, mm.size
20
- end
18
+ assert mm.empty?
19
+ assert_equal 0, mm.size
20
+ end
21
21
 
22
- def test_class_operator_subscript_2
22
+ def test_class_operator_subscript_2
23
23
 
24
- # as hash
24
+ # as hash
25
25
 
26
- mm = MultiMap[ abc: [ 1 ], def: [ 'd' ] ]
26
+ mm = MultiMap[ abc: [ 1 ], def: [ 'd' ] ]
27
27
 
28
- assert_not mm.empty?
29
- assert_equal [ :abc, 1, :def, 'd' ], mm.flatten
30
- assert_equal 2, mm.size
31
- end
28
+ assert_not mm.empty?
29
+ assert_equal [ :abc, 1, :def, 'd' ], mm.flatten
30
+ assert_equal 2, mm.size
31
+ end
32
32
 
33
- def test_class_operator_subscript_3
33
+ def test_class_operator_subscript_3
34
34
 
35
- mm = MultiMap[ [ :abc, 1 ], [ :def, 'd' ] ]
35
+ mm = MultiMap[ [ :abc, 1 ], [ :def, 'd' ] ]
36
36
 
37
- assert_not mm.empty?
38
- assert_equal [ :abc, 1, :def, 'd' ], mm.flatten
39
- assert_equal 2, mm.size
40
- end
37
+ assert_not mm.empty?
38
+ assert_equal [ :abc, 1, :def, 'd' ], mm.flatten
39
+ assert_equal 2, mm.size
40
+ end
41
41
 
42
- def test_class_operator_subscript_4
42
+ def test_class_operator_subscript_4
43
43
 
44
- mm = MultiMap[ [ :abc, 1, 2, 3, 4 ], [ :def, 'd' ] ]
44
+ mm = MultiMap[ [ :abc, 1, 2, 3, 4 ], [ :def, 'd' ] ]
45
45
 
46
- assert_not mm.empty?
47
- assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :def, 'd' ], mm.flatten
48
- assert_equal 2, mm.size
49
- end
46
+ assert_not mm.empty?
47
+ assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :def, 'd' ], mm.flatten
48
+ assert_equal 2, mm.size
49
+ end
50
50
 
51
- def test_class_operator_subscript_5
51
+ def test_class_operator_subscript_5
52
52
 
53
- assert_raise(::TypeError) { MultiMap[:not_a_hash] }
53
+ assert_raise(::TypeError) { MultiMap[:not_a_hash] }
54
54
 
55
- assert_raise(::ArgumentError) { MultiMap[ abc: 1 ] }
55
+ assert_raise(::ArgumentError) { MultiMap[ abc: 1 ] }
56
56
 
57
- assert_raise(::ArgumentError) { MultiMap[ [ :abc ], 1 ] }
57
+ assert_raise(::ArgumentError) { MultiMap[ [ :abc ], 1 ] }
58
58
 
59
- assert_raise(::ArgumentError) { MultiMap[ [ :abc ], [] ] }
60
- end
59
+ assert_raise(::ArgumentError) { MultiMap[ [ :abc ], [] ] }
60
+ end
61
61
 
62
- def test_class_operator_subscript_6
62
+ def test_class_operator_subscript_6
63
63
 
64
- ar = [ [ :abc, '1' ] ]
64
+ ar = [ [ :abc, '1' ] ]
65
65
 
66
- mm = MultiMap[ar]
66
+ mm = MultiMap[ar]
67
67
 
68
- assert_equal 1, ar.size
69
- assert_equal 1, mm.size
70
- assert_equal [ '1' ], mm[:abc]
68
+ assert_equal 1, ar.size
69
+ assert_equal 1, mm.size
70
+ assert_equal [ '1' ], mm[:abc]
71
71
 
72
- ar = [ [ :abc, '1' ], [ :def, '2' ] ]
72
+ ar = [ [ :abc, '1' ], [ :def, '2' ] ]
73
73
 
74
- mm = MultiMap[ar]
74
+ mm = MultiMap[ar]
75
75
 
76
- assert_equal 2, ar.size
77
- assert_equal 2, mm.size
78
- assert_equal [ '1' ], mm[:abc]
79
- assert_equal [ '2' ], mm[:def]
76
+ assert_equal 2, ar.size
77
+ assert_equal 2, mm.size
78
+ assert_equal [ '1' ], mm[:abc]
79
+ assert_equal [ '2' ], mm[:def]
80
80
 
81
- ar = [ [ 1, 11 ], [ 1, 111 ], [ 2, 22 ], [ 3, 333 ], [ 1, 1111 ] ]
81
+ ar = [ [ 1, 11 ], [ 1, 111 ], [ 2, 22 ], [ 3, 333 ], [ 1, 1111 ] ]
82
82
 
83
- mm = MultiMap[ar]
83
+ mm = MultiMap[ar]
84
84
 
85
- assert_equal 5, ar.size
86
- assert_equal 3, mm.size
87
- assert_equal [ 11, 111, 1111 ], mm[1]
88
- assert_equal [ 22 ], mm[2]
89
- assert_equal [ 333 ], mm[3]
90
- end
85
+ assert_equal 5, ar.size
86
+ assert_equal 3, mm.size
87
+ assert_equal [ 11, 111, 1111 ], mm[1]
88
+ assert_equal [ 22 ], mm[2]
89
+ assert_equal [ 333 ], mm[3]
90
+ end
91
91
 
92
- def test_instance_operator_equals
92
+ def test_instance_operator_equals
93
93
 
94
- mm1 = MultiMap.new
95
- mm2 = MultiMap.new
94
+ mm1 = MultiMap.new
95
+ mm2 = MultiMap.new
96
96
 
97
- assert_equal mm1, mm2
97
+ assert_equal mm1, mm2
98
98
 
99
- mm1.push :abc
99
+ mm1.push :abc
100
100
 
101
- assert_not_equal mm1, mm2
101
+ assert_not_equal mm1, mm2
102
102
 
103
- mm2.push :abc
103
+ mm2.push :abc
104
104
 
105
- assert_equal mm1, mm2
105
+ assert_equal mm1, mm2
106
106
 
107
- mm1.push :abc, 1, 2, 3, 4, 5
108
- mm2.push :abc, 1, 2, 3, 4, 5
107
+ mm1.push :abc, 1, 2, 3, 4, 5
108
+ mm2.push :abc, 1, 2, 3, 4, 5
109
109
 
110
- assert_equal mm1, mm2
111
- end
110
+ assert_equal mm1, mm2
111
+ end
112
112
 
113
- def test_instance_operator_subscript
113
+ def test_instance_operator_subscript
114
114
 
115
- mm = MultiMap.new
115
+ mm = MultiMap.new
116
116
 
117
- assert_nil mm[:abc]
117
+ assert_nil mm[:abc]
118
118
 
119
- mm.push :abc
119
+ mm.push :abc
120
120
 
121
- assert_equal [], mm[:abc]
121
+ assert_equal [], mm[:abc]
122
122
 
123
- mm.push :abc, 1, 2, 3
123
+ mm.push :abc, 1, 2, 3
124
124
 
125
- assert_equal [ 1, 2, 3 ], mm[:abc]
126
- end
125
+ assert_equal [ 1, 2, 3 ], mm[:abc]
126
+ end
127
127
 
128
- def test_instance_operator_subscript_assign
128
+ def test_instance_operator_subscript_assign
129
129
 
130
- mm = MultiMap.new
130
+ mm = MultiMap.new
131
131
 
132
- assert_nil mm[:abc]
133
- assert_equal 0, mm.count
134
- assert mm.empty?
135
- assert_equal 0, mm.size
132
+ assert_nil mm[:abc]
133
+ assert_equal 0, mm.count
134
+ assert mm.empty?
135
+ assert_equal 0, mm.size
136
136
 
137
- mm[:abc] = nil
137
+ mm[:abc] = nil
138
138
 
139
- assert_equal [], mm[:abc]
140
- assert_equal 0, mm.count
141
- assert_not mm.empty?
142
- assert_equal 1, mm.size
139
+ assert_equal [], mm[:abc]
140
+ assert_equal 0, mm.count
141
+ assert_not mm.empty?
142
+ assert_equal 1, mm.size
143
143
 
144
- mm.store :abc, 1, 2, '3', nil, false
144
+ mm.store :abc, 1, 2, '3', nil, false
145
145
 
146
- assert_equal [ 1, 2, '3', nil, false ], mm[:abc]
147
- assert_equal 5, mm.count
148
- assert_not mm.empty?
149
- assert_equal 1, mm.size
146
+ assert_equal [ 1, 2, '3', nil, false ], mm[:abc]
147
+ assert_equal 5, mm.count
148
+ assert_not mm.empty?
149
+ assert_equal 1, mm.size
150
150
 
151
- mm.store :abc
151
+ mm.store :abc
152
152
 
153
- assert_equal [], mm[:abc]
154
- assert_equal 0, mm.count
155
- assert_not mm.empty?
156
- assert_equal 1, mm.size
157
- end
153
+ assert_equal [], mm[:abc]
154
+ assert_equal 0, mm.count
155
+ assert_not mm.empty?
156
+ assert_equal 1, mm.size
157
+ end
158
158
 
159
- def test_assoc
159
+ def test_assoc
160
160
 
161
- mm = MultiMap.new
161
+ mm = MultiMap.new
162
162
 
163
- assert_nil mm.assoc :abc
163
+ assert_nil mm.assoc :abc
164
164
 
165
- mm.push :abc
165
+ mm.push :abc
166
166
 
167
- assert_equal [ :abc, [] ], mm.assoc(:abc)
167
+ assert_equal [ :abc, [] ], mm.assoc(:abc)
168
168
 
169
- mm.push :abc, 1, 2
169
+ mm.push :abc, 1, 2
170
170
 
171
- assert_equal [ :abc, [ 1, 2 ] ], mm.assoc(:abc)
172
- end
171
+ assert_equal [ :abc, [ 1, 2 ] ], mm.assoc(:abc)
172
+ end
173
173
 
174
- def test_clear
174
+ def test_clear
175
175
 
176
- mm = MultiMap.new
176
+ mm = MultiMap.new
177
177
 
178
- mm.push :abc, 'a'
179
- mm.push :abc, 'b'
180
- mm.push :abc, 'c'
178
+ mm.push :abc, 'a'
179
+ mm.push :abc, 'b'
180
+ mm.push :abc, 'c'
181
181
 
182
- assert_equal 3, mm.count
183
- assert_not mm.empty?
184
- assert_equal 1, mm.size
182
+ assert_equal 3, mm.count
183
+ assert_not mm.empty?
184
+ assert_equal 1, mm.size
185
185
 
186
- mm.clear
186
+ mm.clear
187
187
 
188
- assert_equal 0, mm.count
189
- assert mm.empty?
190
- assert_equal 0, mm.size
191
- end
188
+ assert_equal 0, mm.count
189
+ assert mm.empty?
190
+ assert_equal 0, mm.size
191
+ end
192
192
 
193
- def test_count_and_delete
193
+ def test_count_and_delete
194
194
 
195
- mm = MultiMap.new
195
+ mm = MultiMap.new
196
196
 
197
- assert_equal 0, mm.count
197
+ assert_equal 0, mm.count
198
198
 
199
- mm.push :abc, 1
199
+ mm.push :abc, 1
200
200
 
201
- assert_equal 1, mm.count
201
+ assert_equal 1, mm.count
202
202
 
203
- mm.push :abc, 2
203
+ mm.push :abc, 2
204
204
 
205
- assert_equal 2, mm.count
205
+ assert_equal 2, mm.count
206
206
 
207
- mm.push :def, 1
207
+ mm.push :def, 1
208
208
 
209
- assert_equal 3, mm.count
209
+ assert_equal 3, mm.count
210
210
 
211
- mm.delete :ghi
211
+ mm.delete :ghi
212
212
 
213
- assert_equal 3, mm.count
213
+ assert_equal 3, mm.count
214
214
 
215
- mm.delete :abc
215
+ mm.delete :abc
216
216
 
217
- assert_equal 1, mm.count
217
+ assert_equal 1, mm.count
218
218
 
219
- mm.delete :def
219
+ mm.delete :def
220
220
 
221
- assert_equal 0, mm.count
222
- end
221
+ assert_equal 0, mm.count
222
+ end
223
223
 
224
- def test_count
224
+ def test_count
225
225
 
226
- test_count_and_delete
227
- end
226
+ test_count_and_delete
227
+ end
228
228
 
229
- def test_default
229
+ def test_default
230
230
 
231
- end
231
+ end
232
232
 
233
- def test_delete
233
+ def test_delete
234
234
 
235
- test_count_and_delete
236
- end
235
+ test_count_and_delete
236
+ end
237
237
 
238
- def test_dup
238
+ def test_dup
239
239
 
240
- mm1 = MultiMap.new
240
+ mm1 = MultiMap.new
241
241
 
242
- mm1.push :def
243
- mm1.push :abc, 'a1', 'a2', 'a3', 'a4'
244
- mm1.push :ghi, 'g1', 'g2'
242
+ mm1.push :def
243
+ mm1.push :abc, 'a1', 'a2', 'a3', 'a4'
244
+ mm1.push :ghi, 'g1', 'g2'
245
245
 
246
- mm2 = mm1.dup
246
+ mm2 = mm1.dup
247
247
 
248
- assert_eql mm1, mm2
249
- end
248
+ assert_eql mm1, mm2
249
+ end
250
250
 
251
- def test_each
251
+ def test_each
252
252
 
253
- mm = MultiMap.new
253
+ mm = MultiMap.new
254
254
 
255
- mm.push :def
256
- mm.push :abc, 'a1', 'a2', 'a3', 'a4'
257
- mm.push :ghi, 'g1', 'g2'
255
+ mm.push :def
256
+ mm.push :abc, 'a1', 'a2', 'a3', 'a4'
257
+ mm.push :ghi, 'g1', 'g2'
258
258
 
259
- r = []
259
+ r = []
260
260
 
261
- mm.each do |k, v|
261
+ mm.each do |k, v|
262
262
 
263
- r << [k, v]
264
- end
263
+ r << [k, v]
264
+ end
265
265
 
266
- r.sort!
266
+ r.sort!
267
267
 
268
- assert_equal 6, r.size
269
- assert_equal [ [ :abc, 'a1' ], [ :abc, 'a2' ], [ :abc, 'a3' ], [ :abc, 'a4' ], [ :ghi, 'g1' ], [ :ghi, 'g2' ] ], r
270
- end
268
+ assert_equal 6, r.size
269
+ assert_equal [ [ :abc, 'a1' ], [ :abc, 'a2' ], [ :abc, 'a3' ], [ :abc, 'a4' ], [ :ghi, 'g1' ], [ :ghi, 'g2' ] ], r
270
+ end
271
271
 
272
- def test_each_with_default
272
+ def test_each_with_default
273
273
 
274
- mm = MultiMap.new
274
+ mm = MultiMap.new
275
275
 
276
- mm.push :def
277
- mm.push :abc, 'a1', 'a2', 'a3', 'a4'
278
- mm.push :ghi, 'g1', 'g2'
276
+ mm.push :def
277
+ mm.push :abc, 'a1', 'a2', 'a3', 'a4'
278
+ mm.push :ghi, 'g1', 'g2'
279
279
 
280
- r = []
280
+ r = []
281
281
 
282
- mm.each(:the_default) do |k, v|
282
+ mm.each(:the_default) do |k, v|
283
283
 
284
- r << [k, v]
285
- end
284
+ r << [k, v]
285
+ end
286
286
 
287
- r.sort!
287
+ r.sort!
288
288
 
289
- assert_equal 7, r.size
290
- assert_equal [ [ :abc, 'a1' ], [ :abc, 'a2' ], [ :abc, 'a3' ], [ :abc, 'a4' ], [ :def, :the_default ], [ :ghi, 'g1' ], [ :ghi, 'g2' ] ], r
291
- end
289
+ assert_equal 7, r.size
290
+ assert_equal [ [ :abc, 'a1' ], [ :abc, 'a2' ], [ :abc, 'a3' ], [ :abc, 'a4' ], [ :def, :the_default ], [ :ghi, 'g1' ], [ :ghi, 'g2' ] ], r
291
+ end
292
292
 
293
- def test_each_key
293
+ def test_each_key
294
294
 
295
- mm = MultiMap.new
295
+ mm = MultiMap.new
296
296
 
297
- mm.push :def
298
- mm.push :abc, 'a1', 'a2', 'a3', 'a4'
299
- mm.push :ghi, 'g1', 'g2'
297
+ mm.push :def
298
+ mm.push :abc, 'a1', 'a2', 'a3', 'a4'
299
+ mm.push :ghi, 'g1', 'g2'
300
300
 
301
- r = []
301
+ r = []
302
302
 
303
- mm.each_key do |k|
303
+ mm.each_key do |k|
304
304
 
305
- r << k
306
- end
305
+ r << k
306
+ end
307
307
 
308
- r.sort!
308
+ r.sort!
309
309
 
310
- assert_equal 3, r.size
311
- assert_equal [ :abc, :def, :ghi ], r
312
- end
310
+ assert_equal 3, r.size
311
+ assert_equal [ :abc, :def, :ghi ], r
312
+ end
313
313
 
314
- def test_each_value
314
+ def test_each_value
315
315
 
316
- mm = MultiMap.new
316
+ mm = MultiMap.new
317
317
 
318
- mm.push :def
319
- mm.push :abc, 'a1', 'a2', 'a3', 'a4'
320
- mm.push :ghi, 'g1', 'g2'
318
+ mm.push :def
319
+ mm.push :abc, 'a1', 'a2', 'a3', 'a4'
320
+ mm.push :ghi, 'g1', 'g2'
321
321
 
322
- r = []
322
+ r = []
323
323
 
324
- mm.each_value do |v|
324
+ mm.each_value do |v|
325
325
 
326
- r << v
327
- end
326
+ r << v
327
+ end
328
328
 
329
- r.sort!
329
+ r.sort!
330
330
 
331
- assert_equal 6, r.size
332
- assert_equal [ 'a1', 'a2', 'a3', 'a4', 'g1', 'g2' ], r
333
- end
331
+ assert_equal 6, r.size
332
+ assert_equal [ 'a1', 'a2', 'a3', 'a4', 'g1', 'g2' ], r
333
+ end
334
334
 
335
- def test_each_with_index
335
+ def test_each_with_index
336
336
 
337
- mm = MultiMap.new
337
+ mm = MultiMap.new
338
338
 
339
- mm.push :def
340
- mm.push :abc, 'a1', 'a2', 'a3', 'a4'
341
- mm.push :ghi, 'g1', 'g2'
339
+ mm.push :def
340
+ mm.push :abc, 'a1', 'a2', 'a3', 'a4'
341
+ mm.push :ghi, 'g1', 'g2'
342
342
 
343
- r = []
343
+ r = []
344
344
 
345
- mm.each_with_index do |key, value, index|
345
+ mm.each_with_index do |key, value, index|
346
346
 
347
- r << [ key, value, index ]
348
- end
347
+ r << [ key, value, index ]
348
+ end
349
349
 
350
- r.sort!
350
+ r.sort!
351
351
 
352
- assert_equal 6, r.size
353
- assert_equal [ [ :abc, 'a1', 0 ], [ :abc, 'a2', 1 ], [ :abc, 'a3', 2 ], [ :abc, 'a4', 3 ], [ :ghi, 'g1', 4 ], [ :ghi, 'g2', 5 ] ], r
354
- end
352
+ assert_equal 6, r.size
353
+ assert_equal [ [ :abc, 'a1', 0 ], [ :abc, 'a2', 1 ], [ :abc, 'a3', 2 ], [ :abc, 'a4', 3 ], [ :ghi, 'g1', 4 ], [ :ghi, 'g2', 5 ] ], r
354
+ end
355
355
 
356
- def test_each_unflattened
356
+ def test_each_unflattened
357
357
 
358
- mm = MultiMap.new
358
+ mm = MultiMap.new
359
359
 
360
- mm.push :def
361
- mm.push :abc, 'a1', 'a2', 'a3', 'a4'
362
- mm.push :ghi, 'g1', 'g2'
360
+ mm.push :def
361
+ mm.push :abc, 'a1', 'a2', 'a3', 'a4'
362
+ mm.push :ghi, 'g1', 'g2'
363
363
 
364
- r = []
364
+ r = []
365
365
 
366
- mm.each_unflattened do |key, value|
366
+ mm.each_unflattened do |key, value|
367
367
 
368
- r << [ key, value ]
369
- end
368
+ r << [ key, value ]
369
+ end
370
370
 
371
- r.sort!
371
+ r.sort!
372
372
 
373
- assert_equal 3, r.size
374
- assert_equal [ :abc, [ 'a1', 'a2', 'a3', 'a4' ] ], r[0]
375
- assert_equal [ :def, [] ], r[1]
376
- assert_equal [ :ghi, [ 'g1', 'g2' ] ], r[2]
377
- end
373
+ assert_equal 3, r.size
374
+ assert_equal [ :abc, [ 'a1', 'a2', 'a3', 'a4' ] ], r[0]
375
+ assert_equal [ :def, [] ], r[1]
376
+ assert_equal [ :ghi, [ 'g1', 'g2' ] ], r[2]
377
+ end
378
378
 
379
- def test_each_unflattened_with_index
379
+ def test_each_unflattened_with_index
380
380
 
381
- mm = MultiMap.new
381
+ mm = MultiMap.new
382
382
 
383
- mm.push :def
384
- mm.push :abc, 'a1', 'a2', 'a3', 'a4'
385
- mm.push :ghi, 'g1', 'g2'
383
+ mm.push :def
384
+ mm.push :abc, 'a1', 'a2', 'a3', 'a4'
385
+ mm.push :ghi, 'g1', 'g2'
386
386
 
387
- r = []
387
+ r = []
388
388
 
389
- mm.each_unflattened_with_index do |(key, value), index|
389
+ mm.each_unflattened_with_index do |(key, value), index|
390
390
 
391
- r << [ key, value, index ]
392
- end
391
+ r << [ key, value, index ]
392
+ end
393
393
 
394
- r.sort!
394
+ r.sort!
395
395
 
396
- assert_equal 3, r.size
397
- assert_equal [ :abc, [ 'a1', 'a2', 'a3', 'a4' ], 1 ], r[0]
398
- assert_equal [ :def, [], 0 ], r[1]
399
- assert_equal [ :ghi, [ 'g1', 'g2' ], 2 ], r[2]
400
- end
396
+ assert_equal 3, r.size
397
+ assert_equal [ :abc, [ 'a1', 'a2', 'a3', 'a4' ], 1 ], r[0]
398
+ assert_equal [ :def, [], 0 ], r[1]
399
+ assert_equal [ :ghi, [ 'g1', 'g2' ], 2 ], r[2]
400
+ end
401
401
 
402
- def test_empty
402
+ def test_empty
403
403
 
404
- mm = MultiMap.new
404
+ mm = MultiMap.new
405
405
 
406
- assert mm.empty?
406
+ assert mm.empty?
407
407
 
408
- mm.push :abc
408
+ mm.push :abc
409
409
 
410
- assert_not mm.empty?
411
- end
410
+ assert_not mm.empty?
411
+ end
412
412
 
413
- def test_op_equal
414
- # `==` evaluates logical equality (except for `Object`)
413
+ def test_op_equal
414
+ # `==` evaluates logical equality (except for `Object`)
415
415
 
416
- mm1 = MultiMap.new
417
- mm2 = MultiMap.new
416
+ mm1 = MultiMap.new
417
+ mm2 = MultiMap.new
418
418
 
419
- assert mm1 == mm1
420
- assert mm2 == mm2
421
- assert mm1 == mm2
419
+ assert mm1 == mm1
420
+ assert mm2 == mm2
421
+ assert mm1 == mm2
422
422
 
423
- mm1.push :abc
424
- mm1.push :def
423
+ mm1.push :abc
424
+ mm1.push :def
425
425
 
426
- assert mm1 == mm1
427
- assert mm2 == mm2
428
- assert_not mm1 == mm2
426
+ assert mm1 == mm1
427
+ assert mm2 == mm2
428
+ assert_not mm1 == mm2
429
429
 
430
- mm2.push :def
431
- mm2.push :abc
430
+ mm2.push :def
431
+ mm2.push :abc
432
432
 
433
- assert mm1 == mm1
434
- assert mm2 == mm2
435
- assert mm1 == mm2
436
- end
433
+ assert mm1 == mm1
434
+ assert mm2 == mm2
435
+ assert mm1 == mm2
436
+ end
437
437
 
438
- def test_eql
439
- # `eql?` evaluates equality based on #hash
438
+ def test_eql?
439
+ # `eql?` evaluates equality based on #hash
440
440
 
441
- mm1 = MultiMap.new
442
- mm2 = MultiMap.new
441
+ mm1 = MultiMap.new
442
+ mm2 = MultiMap.new
443
443
 
444
- assert mm1.eql? mm1
445
- assert mm2.eql? mm2
446
- assert mm1.eql? mm2
444
+ assert mm1.eql? mm1
445
+ assert mm2.eql? mm2
446
+ assert mm1.eql? mm2
447
447
 
448
- mm1.push :abc
449
- mm1.push :def
448
+ mm1.push :abc
449
+ mm1.push :def
450
450
 
451
- assert mm1.eql? mm1
452
- assert mm2.eql? mm2
453
- assert_not mm1.eql? mm2
451
+ assert mm1.eql? mm1
452
+ assert mm2.eql? mm2
453
+ assert_not mm1.eql? mm2
454
454
 
455
- mm2.push :def
456
- mm2.push :abc
455
+ mm2.push :def
456
+ mm2.push :abc
457
457
 
458
- assert mm1.eql? mm1
459
- assert mm2.eql? mm2
460
- assert mm1.eql? mm2
461
- end
458
+ assert mm1.eql? mm1
459
+ assert mm2.eql? mm2
460
+ assert mm1.eql? mm2
461
+ end
462
462
 
463
- def test_equal
464
- # `eql?` evaluates identity
463
+ def test_equal?
464
+ # `eql?` evaluates identity
465
465
 
466
- mm1 = MultiMap.new
467
- mm2 = MultiMap.new
466
+ mm1 = MultiMap.new
467
+ mm2 = MultiMap.new
468
468
 
469
- assert mm1.equal? mm1
470
- assert mm2.equal? mm2
471
- assert_not mm1.equal? mm2
469
+ assert mm1.equal? mm1
470
+ assert mm2.equal? mm2
471
+ assert_not mm1.equal? mm2
472
472
 
473
- mm1.push :abc
474
- mm1.push :def
473
+ mm1.push :abc
474
+ mm1.push :def
475
475
 
476
- assert mm1.equal? mm1
477
- assert mm2.equal? mm2
478
- assert_not mm1.equal? mm2
476
+ assert mm1.equal? mm1
477
+ assert mm2.equal? mm2
478
+ assert_not mm1.equal? mm2
479
479
 
480
- mm2.push :def
481
- mm2.push :abc
480
+ mm2.push :def
481
+ mm2.push :abc
482
482
 
483
- assert mm1.equal? mm1
484
- assert mm2.equal? mm2
485
- assert_not mm1.equal? mm2
486
- end
483
+ assert mm1.equal? mm1
484
+ assert mm2.equal? mm2
485
+ assert_not mm1.equal? mm2
486
+ end
487
487
 
488
- def test_fetch
488
+ def test_fetch
489
489
 
490
- mm = MultiMap.new
490
+ mm = MultiMap.new
491
491
 
492
- assert_raise(::KeyError) { mm.fetch(:does_not_exist) }
493
- assert_equal [2], mm.fetch(:does_not_exist, [2])
494
- assert_raise(::TypeError) { mm.fetch(:does_not_exist, :wrong_type) }
495
- assert_raise(::ArgumentError) { mm.fetch(:does_not_exist) { |k| 33 } }
496
- assert_equal [ 33 ], mm.fetch(:does_not_exist) { |k| [ 33 ] }
497
- assert_equal [ 34 ], mm.fetch(:does_not_exist) { |k| [ 34 ] }
492
+ assert_raise(::KeyError) { mm.fetch(:does_not_exist) }
493
+ assert_equal [2], mm.fetch(:does_not_exist, [2])
494
+ assert_raise(::TypeError) { mm.fetch(:does_not_exist, :wrong_type) }
495
+ assert_raise(::ArgumentError) { mm.fetch(:does_not_exist) { |k| 33 } }
496
+ assert_equal [ 33 ], mm.fetch(:does_not_exist) { |k| [ 33 ] }
497
+ assert_equal [ 34 ], mm.fetch(:does_not_exist) { |k| [ 34 ] }
498
498
 
499
- mm.push :abc, 1, 2, 3
499
+ mm.push :abc, 1, 2, 3
500
500
 
501
- assert_equal [ 1, 2, 3 ], mm.fetch(:abc)
502
- assert_equal [ 1, 2, 3 ], mm.fetch(:abc, [ 1 ])
503
- assert_equal [ 1, 2, 3 ], (mm.fetch(:abc) { |k| [ 33 ] })
504
- end
501
+ assert_equal [ 1, 2, 3 ], mm.fetch(:abc)
502
+ assert_equal [ 1, 2, 3 ], mm.fetch(:abc, [ 1 ])
503
+ assert_equal [ 1, 2, 3 ], (mm.fetch(:abc) { |k| [ 33 ] })
504
+ end
505
505
 
506
- def test_flatten
506
+ def test_flatten
507
507
 
508
- mm = MultiMap.new
508
+ mm = MultiMap.new
509
509
 
510
- assert_equal [], mm.flatten
510
+ assert_equal [], mm.flatten
511
511
 
512
- mm.push :abc
512
+ mm.push :abc
513
513
 
514
- assert_equal [ :abc, [] ], mm.flatten
514
+ assert_equal [ :abc, [] ], mm.flatten
515
515
 
516
- mm.push :abc, 1, 2, 3
516
+ mm.push :abc, 1, 2, 3
517
517
 
518
- assert_equal [ :abc, 1, :abc, 2, :abc, 3 ], mm.flatten
518
+ assert_equal [ :abc, 1, :abc, 2, :abc, 3 ], mm.flatten
519
519
 
520
- mm.push :abc, 4, 5
520
+ mm.push :abc, 4, 5
521
521
 
522
- assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :abc, 5 ], mm.flatten
522
+ assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :abc, 5 ], mm.flatten
523
523
 
524
- mm.push :def
524
+ mm.push :def
525
525
 
526
- assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :abc, 5, :def, [] ], mm.flatten
527
- end
526
+ assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :abc, 5, :def, [] ], mm.flatten
527
+ end
528
528
 
529
- def test_has_key
529
+ def test_has_key?
530
530
 
531
- mm = MultiMap.new
531
+ mm = MultiMap.new
532
532
 
533
- assert_not mm.has_key? :abc
533
+ assert_not mm.has_key? :abc
534
534
 
535
- mm.push :abc, *[ :v1, :v2 ]
535
+ mm.push :abc, *[ :v1, :v2 ]
536
536
 
537
- assert mm.has_key? :abc
537
+ assert mm.has_key? :abc
538
538
 
539
- mm.delete :abc
539
+ mm.delete :abc
540
540
 
541
- assert_not mm.has_key? :abc
542
- end
541
+ assert_not mm.has_key? :abc
542
+ end
543
543
 
544
- def test_has_value
544
+ def test_has_value?
545
545
 
546
- mm = MultiMap.new
546
+ mm = MultiMap.new
547
547
 
548
- assert_not mm.has_value? :abc
548
+ assert_not mm.has_value? :abc
549
549
 
550
- mm.push :abc, *[ :v1, :v2 ]
550
+ mm.push :abc, *[ :v1, :v2 ]
551
551
 
552
- assert mm.has_value? :v1
553
- assert mm.has_value? :v2
554
- assert_not mm.has_value? :v3
552
+ assert mm.has_value? :v1
553
+ assert mm.has_value? :v2
554
+ assert_not mm.has_value? :v3
555
555
 
556
- mm.delete :abc
556
+ mm.delete :abc
557
557
 
558
- assert_not mm.has_value? :abc
559
- end
558
+ assert_not mm.has_value? :abc
559
+ end
560
560
 
561
- def test_has_values
561
+ def test_has_values?
562
562
 
563
- mm = MultiMap.new
563
+ mm = MultiMap.new
564
564
 
565
- assert_not mm.has_values? []
565
+ assert_not mm.has_values? []
566
566
 
567
- mm.push :abc
567
+ mm.push :abc
568
568
 
569
- assert mm.has_values? []
569
+ assert mm.has_values? []
570
570
 
571
- mm.push :abc, * [ :v1, :v2 ]
571
+ mm.push :abc, * [ :v1, :v2 ]
572
572
 
573
- assert_not mm.has_values? []
574
- assert mm.has_values? [ :v1, :v2 ]
573
+ assert_not mm.has_values? []
574
+ assert mm.has_values? [ :v1, :v2 ]
575
575
 
576
- mm.delete :abc
576
+ mm.delete :abc
577
577
 
578
- assert_not mm.has_values? []
579
- end
578
+ assert_not mm.has_values? []
579
+ end
580
580
 
581
- def test_key
581
+ def test_key
582
582
 
583
- mm = MultiMap.new
583
+ mm = MultiMap.new
584
584
 
585
- assert_nil mm.key []
586
- assert_nil mm.key :not_defined
585
+ assert_nil mm.key []
586
+ assert_nil mm.key :not_defined
587
587
 
588
- mm.push :abc, :v1
588
+ mm.push :abc, :v1
589
589
 
590
- assert_equal :abc, mm.key(:v1)
591
- assert_nil mm.key(:v2)
590
+ assert_equal :abc, mm.key(:v1)
591
+ assert_nil mm.key(:v2)
592
592
 
593
- mm.push :abc, :v2
593
+ mm.push :abc, :v2
594
594
 
595
- assert_equal :abc, mm.key(:v1)
596
- assert_equal :abc, mm.key(:v2)
597
- assert_equal :abc, mm.key(:v1, :v2)
598
- assert_nil mm.key(:v2, :v1)
599
- assert_nil mm.key([:v1, :v2])
595
+ assert_equal :abc, mm.key(:v1)
596
+ assert_equal :abc, mm.key(:v2)
597
+ assert_equal :abc, mm.key(:v1, :v2)
598
+ assert_nil mm.key(:v2, :v1)
599
+ assert_nil mm.key([:v1, :v2])
600
600
 
601
- mm.delete :abc
601
+ mm.delete :abc
602
602
 
603
- mm.push :def, :v2, :v1
603
+ mm.push :def, :v2, :v1
604
604
 
605
- assert_equal :def, mm.key(:v2, :v1)
606
- assert_nil mm.key(:v1, :v2)
607
- assert_equal :def, mm.key(:v1)
608
- assert_equal :def, mm.key(:v2)
605
+ assert_equal :def, mm.key(:v2, :v1)
606
+ assert_nil mm.key(:v1, :v2)
607
+ assert_equal :def, mm.key(:v1)
608
+ assert_equal :def, mm.key(:v2)
609
609
 
610
- mm.delete :def
610
+ mm.delete :def
611
611
 
612
- mm.push :ghi, [ :v2, :v1 ]
612
+ mm.push :ghi, [ :v2, :v1 ]
613
613
 
614
- assert_equal :ghi, mm.key([:v2, :v1])
615
- assert_nil mm.key([:v1, :v2])
616
- assert_nil mm.key(:v1)
617
- assert_nil mm.key(:v2)
614
+ assert_equal :ghi, mm.key([:v2, :v1])
615
+ assert_nil mm.key([:v1, :v2])
616
+ assert_nil mm.key(:v1)
617
+ assert_nil mm.key(:v2)
618
618
 
619
- mm.push :ghi, :v1
619
+ mm.push :ghi, :v1
620
620
 
621
- assert_equal :ghi, mm.key([:v2, :v1])
622
- assert_nil mm.key([:v1, :v2])
623
- assert_equal :ghi, mm.key(:v1)
624
- assert_nil mm.key(:v2)
625
- end
621
+ assert_equal :ghi, mm.key([:v2, :v1])
622
+ assert_nil mm.key([:v1, :v2])
623
+ assert_equal :ghi, mm.key(:v1)
624
+ assert_nil mm.key(:v2)
625
+ end
626
626
 
627
- def test_length_and_size
627
+ def test_length_and_size
628
628
 
629
- mm = MultiMap.new
629
+ mm = MultiMap.new
630
630
 
631
- assert mm.empty?
632
- assert_equal 0, mm.size
631
+ assert mm.empty?
632
+ assert_equal 0, mm.size
633
633
 
634
- mm.push :abc, 1
634
+ mm.push :abc, 1
635
635
 
636
- assert_not mm.empty?
637
- assert_equal 1, mm.size
636
+ assert_not mm.empty?
637
+ assert_equal 1, mm.size
638
638
 
639
- mm.push :abc, 2
639
+ mm.push :abc, 2
640
640
 
641
- assert_not mm.empty?
642
- assert_equal 1, mm.size
641
+ assert_not mm.empty?
642
+ assert_equal 1, mm.size
643
643
 
644
- mm.push :def, 1
644
+ mm.push :def, 1
645
645
 
646
- assert_not mm.empty?
647
- assert_equal 2, mm.size
648
- end
646
+ assert_not mm.empty?
647
+ assert_equal 2, mm.size
648
+ end
649
649
 
650
- def test_length
650
+ def test_length
651
651
 
652
- test_length_and_size
653
- end
652
+ test_length_and_size
653
+ end
654
654
 
655
- def test_multi_merge
655
+ def test_multi_merge
656
656
 
657
- mm1 = MultiMap.new
657
+ mm1 = MultiMap.new
658
658
 
659
- mm1.push :abc, 1, 2, 3
659
+ mm1.push :abc, 1, 2, 3
660
660
 
661
- assert_equal [ :abc, 1, :abc, 2, :abc, 3 ], mm1.flatten
661
+ assert_equal [ :abc, 1, :abc, 2, :abc, 3 ], mm1.flatten
662
662
 
663
- mm2 = MultiMap.new
663
+ mm2 = MultiMap.new
664
664
 
665
- mm2.push :abc, 4, 5
666
- mm2.push :def, 'a'
665
+ mm2.push :abc, 4, 5
666
+ mm2.push :def, 'a'
667
667
 
668
- mm3 = mm1.multi_merge mm2
668
+ mm3 = mm1.multi_merge mm2
669
669
 
670
- h = Hash.new
670
+ h = Hash.new
671
671
 
672
- h.store :ghi, 'x'
672
+ h.store :ghi, 'x'
673
673
 
674
- mm4 = mm3.multi_merge h
674
+ mm4 = mm3.multi_merge h
675
675
 
676
- assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :abc, 5, :def, 'a', :ghi, 'x' ], mm4.flatten
677
- end
676
+ assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :abc, 5, :def, 'a', :ghi, 'x' ], mm4.flatten
677
+ end
678
678
 
679
- def test_multi_merge!
679
+ def test_multi_merge!
680
680
 
681
- mm1 = MultiMap.new
681
+ mm1 = MultiMap.new
682
682
 
683
- mm1.push :abc, 1, 2, 3
683
+ mm1.push :abc, 1, 2, 3
684
684
 
685
- assert_equal [ :abc, 1, :abc, 2, :abc, 3 ], mm1.flatten
685
+ assert_equal [ :abc, 1, :abc, 2, :abc, 3 ], mm1.flatten
686
686
 
687
- mm2 = MultiMap.new
687
+ mm2 = MultiMap.new
688
688
 
689
- mm2.push :abc, 4, 5
690
- mm2.push :def, 'a'
689
+ mm2.push :abc, 4, 5
690
+ mm2.push :def, 'a'
691
691
 
692
- mm1.multi_merge! mm2
692
+ mm1.multi_merge! mm2
693
693
 
694
- h = Hash.new
694
+ h = Hash.new
695
695
 
696
- h.store :ghi, 'x'
696
+ h.store :ghi, 'x'
697
697
 
698
- mm1.multi_merge! h
698
+ mm1.multi_merge! h
699
699
 
700
- assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :abc, 5, :def, 'a', :ghi, 'x' ], mm1.flatten
701
- end
700
+ assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :abc, 5, :def, 'a', :ghi, 'x' ], mm1.flatten
701
+ end
702
702
 
703
- def test_strict_merge
703
+ def test_strict_merge
704
704
 
705
- mm1 = MultiMap.new
705
+ mm1 = MultiMap.new
706
706
 
707
- mm1.push :abc, 1, 2, 3
707
+ mm1.push :abc, 1, 2, 3
708
708
 
709
- assert_equal [ :abc, 1, :abc, 2, :abc, 3 ], mm1.flatten
709
+ assert_equal [ :abc, 1, :abc, 2, :abc, 3 ], mm1.flatten
710
710
 
711
- mm2 = MultiMap.new
711
+ mm2 = MultiMap.new
712
712
 
713
- mm2.push :abc, 4, 5
714
- mm2.push :def, 'a'
713
+ mm2.push :abc, 4, 5
714
+ mm2.push :def, 'a'
715
715
 
716
- mm3 = mm1.strict_merge mm2
716
+ mm3 = mm1.strict_merge mm2
717
717
 
718
- h = Hash.new
718
+ h = Hash.new
719
719
 
720
- h.store :ghi, 'x'
720
+ h.store :ghi, 'x'
721
721
 
722
- mm4 = mm3.strict_merge h
722
+ mm4 = mm3.strict_merge h
723
723
 
724
- assert_equal [ :abc, 4, :abc, 5, :def, 'a', :ghi, 'x' ], mm4.flatten
725
- end
724
+ assert_equal [ :abc, 4, :abc, 5, :def, 'a', :ghi, 'x' ], mm4.flatten
725
+ end
726
726
 
727
- def test_strict_merge!
727
+ def test_strict_merge!
728
728
 
729
- mm1 = MultiMap.new
729
+ mm1 = MultiMap.new
730
730
 
731
- mm1.push :abc, 1, 2, 3
731
+ mm1.push :abc, 1, 2, 3
732
732
 
733
- assert_equal [ :abc, 1, :abc, 2, :abc, 3 ], mm1.flatten
733
+ assert_equal [ :abc, 1, :abc, 2, :abc, 3 ], mm1.flatten
734
734
 
735
- mm2 = MultiMap.new
735
+ mm2 = MultiMap.new
736
736
 
737
- mm2.push :abc, 4, 5
738
- mm2.push :def, 'a'
737
+ mm2.push :abc, 4, 5
738
+ mm2.push :def, 'a'
739
739
 
740
- mm1.strict_merge! mm2
740
+ mm1.strict_merge! mm2
741
741
 
742
- h = Hash.new
742
+ h = Hash.new
743
743
 
744
- h.store :ghi, 'x'
744
+ h.store :ghi, 'x'
745
745
 
746
- mm1.strict_merge! h
746
+ mm1.strict_merge! h
747
747
 
748
- assert_equal [ :abc, 4, :abc, 5, :def, 'a', :ghi, 'x' ], mm1.flatten
749
- end
748
+ assert_equal [ :abc, 4, :abc, 5, :def, 'a', :ghi, 'x' ], mm1.flatten
749
+ end
750
750
 
751
- def test_push
751
+ def test_push
752
752
 
753
- mm = MultiMap.new
753
+ mm = MultiMap.new
754
754
 
755
- assert_nil mm[:abc]
756
- assert_equal 0, mm.count
757
- assert mm.empty?
758
- assert_equal 0, mm.size
755
+ assert_nil mm[:abc]
756
+ assert_equal 0, mm.count
757
+ assert mm.empty?
758
+ assert_equal 0, mm.size
759
759
 
760
- mm.push :abc
760
+ mm.push :abc
761
761
 
762
- assert_equal [], mm[:abc]
763
- assert_equal 0, mm.count
764
- assert_not mm.empty?
765
- assert_equal 1, mm.size
762
+ assert_equal [], mm[:abc]
763
+ assert_equal 0, mm.count
764
+ assert_not mm.empty?
765
+ assert_equal 1, mm.size
766
766
 
767
- mm.push :abc, 1, 2, '3', nil, false
767
+ mm.push :abc, 1, 2, '3', nil, false
768
768
 
769
- assert_equal [ 1, 2, '3', nil, false ], mm[:abc]
770
- assert_equal 5, mm.count
771
- assert_not mm.empty?
772
- assert_equal 1, mm.size
769
+ assert_equal [ 1, 2, '3', nil, false ], mm[:abc]
770
+ assert_equal 5, mm.count
771
+ assert_not mm.empty?
772
+ assert_equal 1, mm.size
773
773
 
774
- mm.push :def, *(0...10).to_a
774
+ mm.push :def, *(0...10).to_a
775
775
 
776
- assert_equal [ 1, 2, '3', nil, false ], mm[:abc]
777
- assert_equal [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ], mm[:def]
778
- assert_equal 15, mm.count
779
- assert_not mm.empty?
780
- assert_equal 2, mm.size
781
- end
776
+ assert_equal [ 1, 2, '3', nil, false ], mm[:abc]
777
+ assert_equal [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ], mm[:def]
778
+ assert_equal 15, mm.count
779
+ assert_not mm.empty?
780
+ assert_equal 2, mm.size
781
+ end
782
782
 
783
- def test_shift
783
+ def test_shift
784
784
 
785
- mm = MultiMap.new
785
+ mm = MultiMap.new
786
786
 
787
- assert_nil mm.shift
787
+ assert_nil mm.shift
788
788
 
789
- mm.push :abc
789
+ mm.push :abc
790
790
 
791
- assert_equal [ :abc, [] ], mm.shift
792
- end
791
+ assert_equal [ :abc, [] ], mm.shift
792
+ end
793
793
 
794
- def test_size
794
+ def test_size
795
795
 
796
- test_length_and_size
797
- end
796
+ test_length_and_size
797
+ end
798
798
 
799
- def test_store
799
+ def test_store
800
800
 
801
- mm = MultiMap.new
801
+ mm = MultiMap.new
802
802
 
803
- assert_nil mm[:abc]
804
- assert_equal 0, mm.count
805
- assert mm.empty?
806
- assert_equal 0, mm.size
803
+ assert_nil mm[:abc]
804
+ assert_equal 0, mm.count
805
+ assert mm.empty?
806
+ assert_equal 0, mm.size
807
807
 
808
- mm.store :abc
808
+ mm.store :abc
809
809
 
810
- assert_equal [], mm[:abc]
811
- assert_equal 0, mm.count
812
- assert_not mm.empty?
813
- assert_equal 1, mm.size
810
+ assert_equal [], mm[:abc]
811
+ assert_equal 0, mm.count
812
+ assert_not mm.empty?
813
+ assert_equal 1, mm.size
814
814
 
815
- mm.store :abc, 1, 2, '3', nil, false
815
+ mm.store :abc, 1, 2, '3', nil, false
816
816
 
817
- assert_equal [ 1, 2, '3', nil, false ], mm[:abc]
818
- assert_equal 5, mm.count
819
- assert_not mm.empty?
820
- assert_equal 1, mm.size
817
+ assert_equal [ 1, 2, '3', nil, false ], mm[:abc]
818
+ assert_equal 5, mm.count
819
+ assert_not mm.empty?
820
+ assert_equal 1, mm.size
821
821
 
822
- mm.store :abc
822
+ mm.store :abc
823
823
 
824
- assert_equal [], mm[:abc]
825
- assert_equal 0, mm.count
826
- assert_not mm.empty?
827
- assert_equal 1, mm.size
828
- end
824
+ assert_equal [], mm[:abc]
825
+ assert_equal 0, mm.count
826
+ assert_not mm.empty?
827
+ assert_equal 1, mm.size
828
+ end
829
829
 
830
- def test_to_a
830
+ def test_to_a
831
831
 
832
- mm = MultiMap.new
832
+ mm = MultiMap.new
833
833
 
834
- mm.push :abc
834
+ mm.push :abc
835
835
 
836
- assert_equal [ :abc, [] ], mm.to_a
836
+ assert_equal [ :abc, [] ], mm.to_a
837
837
 
838
- mm.push :abc, 1, 2, 3, 4, 5
838
+ mm.push :abc, 1, 2, 3, 4, 5
839
839
 
840
- assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :abc, 5 ], mm.to_a
840
+ assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :abc, 5 ], mm.to_a
841
841
 
842
- mm.push :def
842
+ mm.push :def
843
843
 
844
- assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :abc, 5, :def, [] ], mm.to_a
845
- end
844
+ assert_equal [ :abc, 1, :abc, 2, :abc, 3, :abc, 4, :abc, 5, :def, [] ], mm.to_a
845
+ end
846
846
 
847
- def test_to_h
847
+ def test_to_h
848
848
 
849
- mm = MultiMap.new
849
+ mm = MultiMap.new
850
850
 
851
- mm.push :abc
851
+ mm.push :abc
852
852
 
853
- assert_equal ({ abc: [] }), mm.to_h
853
+ assert_equal ({ abc: [] }), mm.to_h
854
854
 
855
- mm.push :abc, 1, 2, 3, 4, 5
855
+ mm.push :abc, 1, 2, 3, 4, 5
856
856
 
857
- assert_equal ({ abc: [ 1, 2, 3, 4, 5 ] }), mm.to_h
857
+ assert_equal ({ abc: [ 1, 2, 3, 4, 5 ] }), mm.to_h
858
858
 
859
- mm.push :def
859
+ mm.push :def
860
860
 
861
- assert_equal ({ abc: [ 1, 2, 3, 4, 5 ], def: [] }), mm.to_h
862
- end
861
+ assert_equal ({ abc: [ 1, 2, 3, 4, 5 ], def: [] }), mm.to_h
862
+ end
863
863
 
864
- def test_values_unflattened
864
+ def test_values_unflattened
865
865
 
866
- mm = MultiMap.new
866
+ mm = MultiMap.new
867
867
 
868
- assert_equal [], mm.values_unflattened
868
+ assert_equal [], mm.values_unflattened
869
869
 
870
- mm.store :abc
870
+ mm.store :abc
871
871
 
872
- assert_equal [ [] ], mm.values_unflattened
872
+ assert_equal [ [] ], mm.values_unflattened
873
873
 
874
- mm.store :abc, 1, 2, '3', nil, false
874
+ mm.store :abc, 1, 2, '3', nil, false
875
875
 
876
- assert_equal [ [ 1, 2, '3', nil, false ] ], mm.values_unflattened
876
+ assert_equal [ [ 1, 2, '3', nil, false ] ], mm.values_unflattened
877
877
 
878
- mm.store :def, true
878
+ mm.store :def, true
879
879
 
880
- assert_equal [ [ 1, 2, '3', nil, false ], [ true ] ], mm.values_unflattened
881
- end
880
+ assert_equal [ [ 1, 2, '3', nil, false ], [ true ] ], mm.values_unflattened
881
+ end
882
882
 
883
- def test_values
883
+ def test_values
884
884
 
885
- mm = MultiMap.new
885
+ mm = MultiMap.new
886
886
 
887
- assert_equal [], mm.values
887
+ assert_equal [], mm.values
888
888
 
889
- mm.store :abc
889
+ mm.store :abc
890
890
 
891
- assert_equal [], mm.values
891
+ assert_equal [], mm.values
892
892
 
893
- mm.store :abc, 1, 2, '3', nil, false
893
+ mm.store :abc, 1, 2, '3', nil, false
894
894
 
895
- assert_equal [ 1, 2, '3', nil, false ], mm.values
895
+ assert_equal [ 1, 2, '3', nil, false ], mm.values
896
896
 
897
- mm.store :def, true
897
+ mm.store :def, true
898
898
 
899
- assert_equal [ 1, 2, '3', nil, false, true ], mm.values
900
- end
899
+ assert_equal [ 1, 2, '3', nil, false, true ], mm.values
900
+ end
901
901
 
902
- def test_to_s
902
+ def test_to_s
903
903
 
904
- mm = MultiMap[]
904
+ mm = MultiMap[]
905
905
 
906
- assert_equal "{}", mm.to_s
906
+ assert_equal "{}", mm.to_s
907
907
 
908
- mm.store :abc
908
+ mm.store :abc
909
909
 
910
- assert_equal "{:abc=>[]}", mm.to_s
910
+ assert_equal "{:abc=>[]}", mm.to_s
911
911
 
912
- mm.store :abc, 1
912
+ mm.store :abc, 1
913
913
 
914
- assert_equal "{:abc=>[1]}", mm.to_s
914
+ assert_equal "{:abc=>[1]}", mm.to_s
915
915
 
916
- mm.store :abc, 1, 23
916
+ mm.store :abc, 1, 23
917
917
 
918
- assert_equal "{:abc=>[1, 23]}", mm.to_s
918
+ assert_equal "{:abc=>[1, 23]}", mm.to_s
919
919
 
920
- mm.store :def, *(0...10).to_a
920
+ mm.store :def, *(0...10).to_a
921
921
 
922
- assert_equal "{:abc=>[1, 23], :def=>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}", mm.to_s
923
- end
922
+ assert_equal "{:abc=>[1, 23], :def=>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}", mm.to_s
923
+ end
924
924
  end
925
925