diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-11-07 12:08:24 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-11-07 12:08:24 +0000 |
commit | 72ce1a4759b853b02eab31786acbb69ba80b4fd8 (patch) | |
tree | 9baae6fcbfe704913222d315364b4d0b651a6a75 /test/ruby/test_exception.rb | |
parent | 181f3719bb0df0d0886d069f4385a1e87b7fe8a2 (diff) | |
download | ruby-72ce1a4759b853b02eab31786acbb69ba80b4fd8.tar.gz |
test_exception.rb: more tests
* test/ruby/test_exception.rb: more tests for catch and throw.
catch but no throw, autogenerated tag, and uncaught throw.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/test_exception.rb')
-rw-r--r-- | test/ruby/test_exception.rb | 48 |
1 files changed, 36 insertions, 12 deletions
diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index 919220ebbf..be8d20d34a 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -129,18 +129,42 @@ class TestException < Test::Unit::TestCase assert(!bad) end + def test_catch_no_throw + assert_equal(:foo, catch {:foo}) + end + def test_catch_throw - assert(catch(:foo) { - loop do - loop do - throw :foo, true - break - end - break - assert(false) # should no reach here - end - false - }) + result = catch(:foo) { + loop do + loop do + throw :foo, true + break + end + assert(false, "should no reach here") + end + false + } + assert(result) + end + + def test_catch_throw_noarg + assert_nothing_raised(ArgumentError) { + result = catch {|obj| + throw obj, :ok + assert(false, "should no reach here") + } + assert_equal(:ok, result) + } + end + + def test_uncaught_throw + assert_raise_with_message(ArgumentError, /uncaught throw/) { + catch("foo") {|obj| + throw obj.dup, :ok + assert(false, "should no reach here") + } + assert(false, "should no reach here") + } end def test_catch_throw_in_require @@ -148,7 +172,7 @@ class TestException < Test::Unit::TestCase Tempfile.create(["dep", ".rb"]) {|t| t.puts("throw :extdep, 42") t.close - assert_equal(42, catch(:extdep) {require t.path}, bug7185) + assert_equal(42, assert_throw(:extdep, bug7185) {require t.path}, bug7185) } end |