summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-hash-ext/test
diff options
context:
space:
mode:
authorJun Hiroe <[email protected]>2014-05-04 00:35:18 +0900
committerJun Hiroe <[email protected]>2014-05-04 00:46:36 +0900
commit3e7db4ad271f5e2eebdb92114266d15d21d5cc34 (patch)
treef8d0be72db26f774df3afe66b749e4c31b4a22b2 /mrbgems/mruby-hash-ext/test
parent8e4d3bb94e869679486ebeaefcc586b4e3ed5cb7 (diff)
downloadmruby-3e7db4ad271f5e2eebdb92114266d15d21d5cc34.tar.gz
mruby-3e7db4ad271f5e2eebdb92114266d15d21d5cc34.zip
Add Hash#delete_if
Diffstat (limited to 'mrbgems/mruby-hash-ext/test')
-rw-r--r--mrbgems/mruby-hash-ext/test/hash.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/mrbgems/mruby-hash-ext/test/hash.rb b/mrbgems/mruby-hash-ext/test/hash.rb
index 83a064811..4c7dbb217 100644
--- a/mrbgems/mruby-hash-ext/test/hash.rb
+++ b/mrbgems/mruby-hash-ext/test/hash.rb
@@ -39,3 +39,37 @@ assert('Hash#fetch') do
assert_kind_of(StandardError, e);
end
end
+
+assert("Hash#delete_if") do
+ base = { 1 => 'one', 2 => false, true => 'true', 'cat' => 99 }
+ h1 = { 1 => 'one', 2 => false, true => 'true' }
+ h2 = { 2 => false, 'cat' => 99 }
+ h3 = { 2 => false }
+
+ h = base.dup
+ assert_equal(h, h.delete_if { false })
+ assert_equal({}, h.delete_if { true })
+
+ h = base.dup
+ assert_equal(h1, h.delete_if {|k,v| k.instance_of?(String) })
+ assert_equal(h1, h)
+
+ h = base.dup
+ assert_equal(h2, h.delete_if {|k,v| v.instance_of?(String) })
+ assert_equal(h2, h)
+
+ h = base.dup
+ assert_equal(h3, h.delete_if {|k,v| v })
+ assert_equal(h3, h)
+
+ h = base.dup
+ n = 0
+ h.delete_if {|*a|
+ n += 1
+ assert_equal(2, a.size)
+ assert_equal(base[a[0]], a[1])
+ h.shift
+ true
+ }
+ assert_equal(base.size, n)
+end