diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-06-02 07:48:29 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-06-02 07:48:29 +0000 |
commit | 6b3ef2249cc6d03b9e153a1bbfb24eb12d4032a5 (patch) | |
tree | 11d43bf13048e34b30b13588f07255fc5099747a /test/ruby/test_fiber.rb | |
parent | 66d4a354a874fb8539e0e421a684c34d8890ad22 (diff) | |
download | ruby-6b3ef2249cc6d03b9e153a1bbfb24eb12d4032a5.tar.gz |
* cont.c (Fiber#pass): rename to Fiber#yield. Block parameter
of fiber body receive first yield values.
e.g.: Fiber.new{|x| p x}.yield(:ok) #=> :ok
* cont.c: rename rb_context_t#retval to rb_context_t#value.
* test/ruby/test_fiber.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/test_fiber.rb')
-rw-r--r-- | test/ruby/test_fiber.rb | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/test/ruby/test_fiber.rb b/test/ruby/test_fiber.rb index 38d7cd9b62..999bfd267a 100644 --- a/test/ruby/test_fiber.rb +++ b/test/ruby/test_fiber.rb @@ -4,25 +4,27 @@ class TestFiber < Test::Unit::TestCase def test_normal f = Fiber.current assert_equal(:ok2, - Fiber.new(:ok1){|e| + Fiber.new{|e| assert_equal(:ok1, e) assert_equal(f, Fiber.prev) - Fiber.pass :ok2 - }.pass) + Fiber.yield :ok2 + }.yield(:ok1) + ) + assert_equal([:a, :b], Fiber.new{|a, b| [a, b]}.yield(:a, :b)) end def test_term - assert_equal(:ok, Fiber.new{:ok}.pass) + assert_equal(:ok, Fiber.new{:ok}.yield) assert_equal([:a, :b, :c, :d, :e], Fiber.new{ Fiber.new{ Fiber.new{ Fiber.new{ [:a] - }.pass + [:b] - }.pass + [:c] - }.pass + [:d] - }.pass + [:e]) + }.yield + [:b] + }.yield + [:c] + }.yield + [:d] + }.yield + [:e]) end def test_many_fibers @@ -33,7 +35,7 @@ class TestFiber < Test::Unit::TestCase assert_equal(max, max.times{|i| Fiber.new{ - }.pass + }.yield } ) end @@ -42,9 +44,14 @@ class TestFiber < Test::Unit::TestCase assert_raise(ArgumentError){ Fiber.new # Fiber without block } - assert_raise(RuntimeError){ + assert_raise(FiberError){ + f = Fiber.new{} + Thread.new{f.yield}.join # Fiber yielding across thread + } + assert_raise(FiberError){ f = Fiber.new{} - Thread.new{f.pass}.join # Fiber passing across thread + f.yield + f.yield } end @@ -52,14 +59,14 @@ class TestFiber < Test::Unit::TestCase ary = [] f2 = nil f1 = Fiber.new{ - ary << f2.pass(:foo) + ary << f2.yield(:foo) :bar } f2 = Fiber.new{ - ary << f1.pass(:baz) + ary << f1.yield(:baz) :ok } - assert_equal(:ok, f1.pass) + assert_equal(:ok, f1.yield) assert_equal([:baz, :bar], ary) end end |