Skip to content

Commit 0916a11

Browse files
Add tests for changed select, reject, and select! methods
1 parent d98e52b commit 0916a11

File tree

2 files changed

+67
-5
lines changed

2 files changed

+67
-5
lines changed

test/bson/hash_with_indifferent_access_test.rb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,27 @@ def test_embedded_document
5858
bson = @encoder.serialize(person)
5959
assert_equal person, @encoder.deserialize(bson.to_s)
6060
end
61+
62+
def test_class_regression
63+
doc = HashWithIndifferentAccess.new
64+
doc['a'] = 1
65+
doc['b'] = 2
66+
doc['c'] = 3
67+
68+
doc2 = doc.reject { |k, v| v > 1 }
69+
assert doc2.include?('a')
70+
assert !doc2.include?('c')
71+
assert_instance_of HashWithIndifferentAccess, doc2
72+
73+
doc3 = doc.select { |k, v| v == 2 }
74+
assert doc3.include?('b')
75+
assert !doc3.include?('c')
76+
assert_instance_of HashWithIndifferentAccess, doc3
77+
78+
doc.select! { |k, v| v > 2 }
79+
assert doc.include?('c')
80+
assert !doc.include?('b')
81+
assert_nil doc.select! { |k, v| v > 0 }
82+
end
83+
6184
end

test/bson/ordered_hash_test.rb

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -234,14 +234,53 @@ def test_reject
234234
new = @oh.reject { |k, v| k == 'foo' }
235235
assert new.keys == @oh.keys
236236

237-
new = @oh.reject { |k, v| k == 'z' }
238-
assert !new.keys.include?('z')
237+
new2 = @oh.reject { |k, v| k == 'z' }
238+
assert !new2.keys.include?('z')
239+
assert_instance_of BSON::OrderedHash, new2
239240
end
240241

241242
def test_reject_bang
242-
@oh.reject! { |k, v| k == 'z' }
243-
assert !@oh.keys.include?('z')
244-
assert_nil @oh.reject! { |k, v| k == 'z' }
243+
@oh.reject! { |k, v| v < 3 }
244+
assert !@oh.keys.include?('c')
245+
assert !@oh.keys.include?('a')
246+
assert @oh.keys.include?('z')
247+
assert_nil @oh.reject! { |k, v| v > 100 }
248+
end
249+
250+
def test_reject_as_enum
251+
run_reject = @oh.reject
252+
new = run_reject.each { |k, v| v > 1 }
253+
assert new.keys.include?('c')
254+
end
255+
256+
def test_reject_bang_frozen
257+
@oh.freeze
258+
assert_raise_error RuntimeError, "can't modify frozen" do
259+
@oh.reject! { |k, v| v > 0 }
260+
end
261+
end
262+
263+
def test_select
264+
new = @oh.select { |k, v| k == 'foo' }
265+
assert new.keys.empty?
266+
267+
new2 = @oh.select { |k, v| k == 'a' }
268+
assert new2.keys.include?('a')
269+
assert !new2.keys.include?('z')
270+
assert_instance_of BSON::OrderedHash, new2
271+
end
272+
273+
def test_select_as_enum
274+
run_select = @oh.select
275+
new = run_select.each { |k, v| v > 1 }
276+
assert !new.keys.include?('c')
277+
end
278+
279+
def test_select_bang
280+
@oh.select! { |k, v| v > 1 }
281+
assert @oh.keys.include?('a')
282+
assert !@oh.keys.include?('c')
283+
assert_nil @oh.select! { |k, v| v > 0 }
245284
end
246285

247286
def test_clone

0 commit comments

Comments
 (0)