зеркало из https://github.com/github/ruby.git
40 строки
699 B
Ruby
40 строки
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]'
|