mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* test/ruby: tests for ruby itself.
* test/ruby/test_*.rb: split sample/test.rb into 28 test/unit testcases. some tests could not be translates... search '!!' mark to see it. * test/csv/test_csv.rb: should require 'csv', not '../lib/csv'. test runner should set load path correctly. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
822a72b8ee
commit
aaf5d9c03c
30 changed files with 2234 additions and 1 deletions
96
test/ruby/test_exception.rb
Normal file
96
test/ruby/test_exception.rb
Normal file
|
@ -0,0 +1,96 @@
|
|||
require 'test/unit'
|
||||
|
||||
$KCODE = 'none'
|
||||
|
||||
class TestException < Test::Unit::TestCase
|
||||
def test_exception
|
||||
begin
|
||||
raise "this must be handled"
|
||||
assert(false)
|
||||
rescue
|
||||
assert(true)
|
||||
end
|
||||
|
||||
$bad = true
|
||||
begin
|
||||
raise "this must be handled no.2"
|
||||
rescue
|
||||
if $bad
|
||||
$bad = false
|
||||
retry
|
||||
assert(false)
|
||||
end
|
||||
end
|
||||
assert(true)
|
||||
|
||||
# exception in rescue clause
|
||||
$string = "this must be handled no.3"
|
||||
begin
|
||||
begin
|
||||
raise "exception in rescue clause"
|
||||
rescue
|
||||
raise $string
|
||||
end
|
||||
assert(false)
|
||||
rescue
|
||||
assert(true) if $! == $string
|
||||
end
|
||||
|
||||
# exception in ensure clause
|
||||
begin
|
||||
begin
|
||||
raise "this must be handled no.4"
|
||||
ensure
|
||||
raise "exception in ensure clause"
|
||||
end
|
||||
assert(false)
|
||||
rescue
|
||||
assert(true)
|
||||
end
|
||||
|
||||
$bad = true
|
||||
begin
|
||||
begin
|
||||
raise "this must be handled no.5"
|
||||
ensure
|
||||
$bad = false
|
||||
end
|
||||
rescue
|
||||
end
|
||||
assert(!$bad)
|
||||
|
||||
$bad = true
|
||||
begin
|
||||
begin
|
||||
raise "this must be handled no.6"
|
||||
ensure
|
||||
$bad = false
|
||||
end
|
||||
rescue
|
||||
end
|
||||
assert(!$bad)
|
||||
|
||||
$bad = true
|
||||
while true
|
||||
begin
|
||||
break
|
||||
ensure
|
||||
$bad = false
|
||||
end
|
||||
end
|
||||
assert(!$bad)
|
||||
|
||||
assert(catch(:foo) {
|
||||
loop do
|
||||
loop do
|
||||
throw :foo, true
|
||||
break
|
||||
end
|
||||
break
|
||||
assert(false) # should no reach here
|
||||
end
|
||||
false
|
||||
})
|
||||
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue