1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* properties.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35788 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2012-05-25 04:53:54 +00:00
parent 1f3142a447
commit 9a66f6f07e

View file

@ -1,57 +1,57 @@
require 'test/unit' require 'test/unit'
class TestBacktrace < Test::Unit::TestCase class TestBacktrace < Test::Unit::TestCase
def test_exception def test_exception
bt = Fiber.new{ bt = Fiber.new{
begin begin
raise raise
rescue => e rescue => e
e.backtrace e.backtrace
end end
}.resume }.resume
assert_equal(1, bt.size) assert_equal(1, bt.size)
assert_match(/.+:\d+:.+/, bt[0]) assert_match(/.+:\d+:.+/, bt[0])
end end
def test_caller_lev def test_caller_lev
cs = [] cs = []
Fiber.new{ Fiber.new{
Proc.new{ Proc.new{
cs << caller(0) cs << caller(0)
cs << caller(1) cs << caller(1)
cs << caller(2) cs << caller(2)
cs << caller(3) cs << caller(3)
cs << caller(4) cs << caller(4)
cs << caller(5) cs << caller(5)
}.call }.call
}.resume }.resume
assert_equal(3, cs[0].size) assert_equal(3, cs[0].size)
assert_equal(2, cs[1].size) assert_equal(2, cs[1].size)
assert_equal(1, cs[2].size) assert_equal(1, cs[2].size)
assert_equal(0, cs[3].size) assert_equal(0, cs[3].size)
assert_equal(nil, cs[4]) assert_equal(nil, cs[4])
# #
max = 20 max = 20
rec = lambda{|n| rec = lambda{|n|
if n > 0 if n > 0
1.times{ 1.times{
rec[n-1] rec[n-1]
} }
else else
max.times{|i| max.times{|i|
total_size = caller(0).size total_size = caller(0).size
c = caller(i) c = caller(i)
if c if c
assert_equal(total_size - i, caller(i).size, "[ruby-dev:45673]") assert_equal(total_size - i, caller(i).size, "[ruby-dev:45673]")
end end
} }
end end
} }
bt = Fiber.new{ bt = Fiber.new{
rec[max] rec[max]
}.resume }.resume
end end
end end