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 | acb1179cd8edcd48e74178acf7d65e6c71181199 (patch) | |
| tree | 11d43bf13048e34b30b13588f07255fc5099747a /test/ruby | |
| parent | 95eb9d6a8492b18cedc6db645c1d98a7f4ab9087 (diff) | |
| download | ruby-acb1179cd8edcd48e74178acf7d65e6c71181199.tar.gz ruby-acb1179cd8edcd48e74178acf7d65e6c71181199.tar.xz ruby-acb1179cd8edcd48e74178acf7d65e6c71181199.zip | |
* 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: http://svn.ruby-lang.org/repos/ruby/trunk@12425 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby')
| -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 38d7cd9b6..999bfd267 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 |
