mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
40 lines
699 B
Ruby
40 lines
699 B
Ruby
|
show_limit %q{
|
||
|
fibers = []
|
||
|
begin
|
||
|
fiber = Fiber.new{Fiber.yield}
|
||
|
fiber.resume
|
||
|
fibers << fiber
|
||
|
|
||
|
raise Exception, "skipping" if fibers.count >= 10_000
|
||
|
rescue Exception => error
|
||
|
puts "Fiber count: #{fibers.count} (#{error})"
|
||
|
break
|
||
|
end while true
|
||
|
}
|
||
|
|
||
|
assert_equal %q{ok}, %q{
|
||
|
Fiber.new{
|
||
|
}.resume
|
||
|
:ok
|
||
|
}
|
||
|
|
||
|
assert_equal %q{ok}, %q{
|
||
|
10_000.times.collect{Fiber.new{}}
|
||
|
:ok
|
||
|
}
|
||
|
|
||
|
assert_equal %q{ok}, %q{
|
||
|
fibers = 100.times.collect{Fiber.new{Fiber.yield}}
|
||
|
fibers.each(&:resume)
|
||
|
fibers.each(&:resume)
|
||
|
:ok
|
||
|
}
|
||
|
|
||
|
assert_normal_exit %q{
|
||
|
at_exit { Fiber.new{}.resume }
|
||
|
}
|
||
|
|
||
|
assert_normal_exit %q{
|
||
|
Fiber.new(&Object.method(:class_eval)).resume("foo")
|
||
|
}, '[ruby-dev:34128]'
|