diff options
-rw-r--r-- | test/test_weakref.rb | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/test/test_weakref.rb b/test/test_weakref.rb index 27a8499615..85820b17b8 100644 --- a/test/test_weakref.rb +++ b/test/test_weakref.rb @@ -4,21 +4,22 @@ require_relative './ruby/envutil' class TestWeakRef < Test::Unit::TestCase def make_weakref(level = 10) - obj = Object.new - str = obj.to_s - level.times {obj = WeakRef.new(obj)} - return WeakRef.new(obj), str + if level > 0 + make_weakref(level - 1) + else + WeakRef.new(Object.new) + end end def test_ref - weak, str = make_weakref - assert_equal(str, weak.to_s) + obj = Object.new + weak = WeakRef.new(obj) + assert_equal(obj.to_s, weak.to_s) + assert_predicate(weak, :weakref_alive?) end def test_recycled - weak, str = make_weakref - assert_nothing_raised(WeakRef::RefError) {weak.to_s} - assert_predicate(weak, :weakref_alive?) + weak = make_weakref ObjectSpace.garbage_collect ObjectSpace.garbage_collect assert_raise(WeakRef::RefError) {weak.to_s} |