summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_weakkeymap.rb (renamed from test/ruby/weakkeymap.rb)21
-rw-r--r--test/ruby/test_weakmap.rb16
2 files changed, 33 insertions, 4 deletions
diff --git a/test/ruby/weakkeymap.rb b/test/ruby/test_weakkeymap.rb
index 20bfe5ec2c..5df53749ca 100644
--- a/test/ruby/weakkeymap.rb
+++ b/test/ruby/test_weakkeymap.rb
@@ -33,11 +33,24 @@ class TestWeakKeyMap < Test::Unit::TestCase
end
def test_key?
- 1.times do
- assert_weak_include(:key?, "foo")
+ assert_weak_include(:key?, "foo")
+ assert_not_send([@wm, :key?, "bar"])
+ end
+
+ def test_delete
+ k1 = "foo"
+ x1 = Object.new
+ @wm[k1] = x1
+ assert_equal x1, @wm[k1]
+ assert_equal x1, @wm.delete(k1)
+ assert_nil @wm[k1]
+ assert_nil @wm.delete(k1)
+
+ fallback = @wm.delete(k1) do |key|
+ assert_equal k1, key
+ 42
end
- GC.start
- assert_not_send([@wm, :key?, "FOO".downcase])
+ assert_equal 42, fallback
end
def test_clear
diff --git a/test/ruby/test_weakmap.rb b/test/ruby/test_weakmap.rb
index 7fc956dfae..f9358e11f3 100644
--- a/test/ruby/test_weakmap.rb
+++ b/test/ruby/test_weakmap.rb
@@ -82,6 +82,22 @@ class TestWeakMap < Test::Unit::TestCase
@wm.inspect)
end
+ def test_delete
+ k1 = "foo"
+ x1 = Object.new
+ @wm[k1] = x1
+ assert_equal x1, @wm[k1]
+ assert_equal x1, @wm.delete(k1)
+ assert_nil @wm[k1]
+ assert_nil @wm.delete(k1)
+
+ fallback = @wm.delete(k1) do |key|
+ assert_equal k1, key
+ 42
+ end
+ assert_equal 42, fallback
+ end
+
def test_each
m = __callee__[/test_(.*)/, 1]
x1 = Object.new