xqsr3 0.38.1.1 → 0.39.1

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