;; test_exceptions.nu
;; tests for Nu exception handling.
;;
;; Copyright (c) 2007 Tim Burks, Radtastical Inc.
(class TestExceptions is NuTestCase
(if (eq (uname) "Darwin") ;; broken for iOS simulator-only
(- (id) testRangeException is
(set name nil)
(set before nil)
(set after nil)
(set z nil)
(try
(set before "this should always be set")
((NSArray array) objectAtIndex:1)
(set after "this should never be set")
(catch (exception) (set name (exception name)))
(finally (set z 99)))
(assert_equal "this should always be set" before)
(assert_equal nil after)
(assert_equal "NSRangeException" name)
(assert_equal 99 z)))
(if (eq (uname) "Darwin") ;; broken for iOS simulator-only
(- (id) testUserRaisedException is
(set name nil)
(set before nil)
(set after nil)
(set z nil)
(try
(set before "this should always be set")
(((NSException alloc) initWithName:"UserException" reason:"" userInfo:nil) raise)
(set after "this should never be set")
(catch (exception) (set name (exception name)))
(finally (set z 99)))
(assert_equal "this should always be set" before)
(assert_equal nil after)
(assert_equal "UserException" name)
(assert_equal 99 z)))
(- (id) testUserThrownException is
(set name nil)
(set before nil)
(set after nil)
(set z nil)
(try
(set before "this should always be set")
(throw ((NSException alloc) initWithName:"UserException" reason:"" userInfo:nil))
(set after "this should never be set")
(catch (exception) (set name (exception name)))
(finally (set z 99)))
(assert_equal "this should always be set" before)
(assert_equal nil after)
(assert_equal "UserException" name)
(assert_equal 99 z))
(- (id) testUserThrownObject is
(set object nil)
(set before nil)
(set after nil)
(set z nil)
(try
(set before "this should always be set")
(throw 99)
(catch (thrown) (set object thrown))
(finally (set z 99)))
(assert_equal "this should always be set" before)
(assert_equal nil after)
(assert_equal 99 object)
(assert_equal 99 z))
(- (id) testAssertThrown is
(assert_throws "UserException"
(do () (throw ((NSException alloc) initWithName:"UserException" reason:"" userInfo:nil))))))