summaryrefslogtreecommitdiff
path: root/test/ruby/weakkeymap.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ruby/weakkeymap.rb')
-rw-r--r--test/ruby/weakkeymap.rb112
1 files changed, 0 insertions, 112 deletions
diff --git a/test/ruby/weakkeymap.rb b/test/ruby/weakkeymap.rb
deleted file mode 100644
index 20bfe5ec2c..0000000000
--- a/test/ruby/weakkeymap.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-# frozen_string_literal: false
-require 'test/unit'
-
-class TestWeakKeyMap < Test::Unit::TestCase
- def setup
- @wm = ObjectSpace::WeakKeyMap.new
- end
-
- def test_map
- x = Object.new
- k = "foo"
- @wm[k] = x
- assert_same(x, @wm[k])
- assert_same(x, @wm["FOO".downcase])
- end
-
- def test_aset_const
- x = Object.new
- assert_raise(ArgumentError) { @wm[true] = x }
- assert_raise(ArgumentError) { @wm[false] = x }
- assert_raise(ArgumentError) { @wm[nil] = x }
- assert_raise(ArgumentError) { @wm[42] = x }
- assert_raise(ArgumentError) { @wm[2**128] = x }
- assert_raise(ArgumentError) { @wm[1.23] = x }
- assert_raise(ArgumentError) { @wm[:foo] = x }
- assert_raise(ArgumentError) { @wm["foo#{rand}".to_sym] = x }
- end
-
- def test_getkey
- k = "foo"
- @wm[k] = true
- assert_same(k, @wm.getkey("FOO".downcase))
- end
-
- def test_key?
- 1.times do
- assert_weak_include(:key?, "foo")
- end
- GC.start
- assert_not_send([@wm, :key?, "FOO".downcase])
- end
-
- def test_clear
- k = "foo"
- @wm[k] = true
- assert @wm[k]
- assert_same @wm, @wm.clear
- refute @wm[k]
- end
-
- def test_inspect
- x = Object.new
- k = Object.new
- @wm[k] = x
- assert_match(/\A\#<#{@wm.class.name}:[\dxa-f]+ size=\d+>\z/, @wm.inspect)
-
- 1000.times do |i|
- @wm[i.to_s] = Object.new
- @wm.inspect
- end
- assert_match(/\A\#<#{@wm.class.name}:[\dxa-f]+ size=\d+>\z/, @wm.inspect)
- end
-
- def test_no_hash_method
- k = BasicObject.new
- assert_raise NoMethodError do
- @wm[k] = 42
- end
- end
-
- def test_frozen_object
- o = Object.new.freeze
- assert_nothing_raised(FrozenError) {@wm[o] = 'foo'}
- assert_nothing_raised(FrozenError) {@wm['foo'] = o}
- end
-
- def test_inconsistent_hash_key
- assert_no_memory_leak [], '', <<~RUBY
- class BadHash
- def initialize
- @hash = 0
- end
-
- def hash
- @hash += 1
- end
- end
-
- k = BadHash.new
- wm = ObjectSpace::WeakKeyMap.new
-
- 100_000.times do |i|
- wm[k] = i
- end
- RUBY
- end
-
- private
-
- def assert_weak_include(m, k, n = 100)
- if n > 0
- return assert_weak_include(m, k, n-1)
- end
- 1.times do
- x = Object.new
- @wm[k] = x
- assert_send([@wm, m, k])
- assert_send([@wm, m, "FOO".downcase])
- x = Object.new
- end
- end
-end