@@ -197,5 +197,37 @@ def test_maps_no_elements
197
197
collected = stream . map { |val | val . to_s } . collect
198
198
assert ( collected . empty? )
199
199
end
200
+
201
+ # FromArray.distinct removes all duplicates.
202
+ def test_removes_duplicates
203
+ stream = FromArray . new ( [ 2 , 2 , 3 , 4 , 1 , 1 , 2 , 5 , 4 , 3 , 6 ] )
204
+ collected = stream . distinct . collect
205
+ assert ( collected == collected . uniq )
206
+ assert ( collected . length == collected . uniq . length )
207
+ end
208
+
209
+ # FromArray.distinct works when the stream is empty.
210
+ def test_empty_distinct
211
+ stream = FromArray . new ( [ ] )
212
+ collected = stream . distinct . collect
213
+ assert ( collected . length . zero? )
214
+ end
215
+
216
+ # FromArray.distinct works when there are no duplicates in the array.
217
+ def test_distinct_no_duplicates
218
+ stream = FromArray . new ( [ 1 , 2 , 3 , 4 , 5 ] )
219
+ collected = stream . distinct . collect
220
+ assert ( collected == collected . uniq )
221
+ assert ( collected . length == collected . uniq . length )
222
+ end
223
+
224
+ # FromArray.distinct works when there is only 1 element with
225
+ # its duplicate
226
+ def test_distinct_one_duplicate_element
227
+ stream = FromArray . new ( [ 1 , 1 ] )
228
+ collected = stream . distinct . collect
229
+ assert ( collected . length == 1 )
230
+ assert ( collected == collected . uniq )
231
+ end
200
232
end
201
233
end
0 commit comments