public
Description: The Nu programming language.
Homepage: http://programming.nu
Clone URL: git://github.com/timburks/nu.git
nu / test / test_exceptions.nu
100644 81 lines (70 sloc) 3.005 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
;; test_exceptions.nu
;; tests for Nu exception handling.
;;
;; Copyright (c) 2007 Tim Burks, Neon Design Technology, Inc.
 
(class TestExceptions is NuTestCase
     
     (imethod (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)
          (if (eq (uname) "Darwin")
              (then (assert_equal "NSRangeException" name))
              (else (assert_equal "Index out of range" name)))
          (assert_equal 99 z))
     
     (imethod (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))
     
     (if (eq (uname) "Darwin")
         (imethod (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))
         
         (imethod (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))
         
         (imethod (id) testAssertThrown is
              (assert_throws "UserException"
                   (do () (throw ((NSException alloc) initWithName:"UserException" reason:"" userInfo:nil)))))))