diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-12-12 06:17:23 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-12-12 06:17:23 +0000 |
commit | 994bb6d36d8717f7566fd6e953d629b6e2c30926 (patch) | |
tree | 9725415ea5949a9fddc74bb3da0f83d1fbf669de | |
parent | 1149533821a0fe689c038deba268a81dd20f91d5 (diff) |
test_weakref.rb: use single level WeakRef
* test/test_weakref.rb (make_weakref): return single level
WeakRef, instead of multiple level, since the second level
object may be still alive even after the final object get
finalized, in test_recycled.
* test/test_weakref.rb (test_ref): move living object assertions
from test_recycled.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44146 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-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} |