summaryrefslogtreecommitdiff
path: root/test/ruby/test_fiber.rb
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-06-02 07:48:29 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-06-02 07:48:29 +0000
commit6b3ef2249cc6d03b9e153a1bbfb24eb12d4032a5 (patch)
tree11d43bf13048e34b30b13588f07255fc5099747a /test/ruby/test_fiber.rb
parent66d4a354a874fb8539e0e421a684c34d8890ad22 (diff)
* 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.rb35
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