Ton
1() test1() impure {
2int i = 3;
3repeat (3) {
4try {
5int j = i;
6i *= 2;
7throw_unless(500, j <= 10);
8} catch (x, e) {
9i -= 2;
10}
11i += i + 1;
12}
13throw_unless(501, i == 43);
14}
15
16int divide_by_ten(int num) {
17try {
18throw_unless(500, num < 10);
19} catch (x, e) {
20return divide_by_ten(num - 10) + 1;
21}
22return 0;
23}
24
25() test2() impure {
26int n = divide_by_ten(37);
27throw_unless(502, n == 3);
28}
29
30(int, int) swap_int(int a, int b) {
31try {
32a = a * b;
33b = a / b;
34a = a / b;
35return (a, b);
36} catch (x, e) {
37throw_unless(500, b == 0);
38}
39return (0, a);
40}
41
42() test3() impure {
43int a = 0;
44int b = 57;
45try {
46(a, b) = swap_int(a, b);
47} catch (x, e) {
48throw_unless(500, a == 0);
49a = b;
50b = 0;
51}
52throw_unless(503, (a == 57) & (b == 0));
53}
54
55int get_x(int x, int y) {
56try {
57} catch (x, e) {
58return -1;
59}
60return x;
61}
62
63int get_y(int x, int y) {
64try {
65return -1;
66} catch (x, e) {
67}
68return y;
69}
70
71() test4() impure {
72throw_unless(504, get_x(3, 4) == 3);
73throw_unless(504, get_y(3, 4) == -1);
74}
75
76(int, int, int, int, int) foo(int a, int b, int c, int d, int e) {
77try {
78throw(11);
79} catch (x, y) {
80a += 1;
81b += 2;
82c += 3;
83d += 4;
84e += 5;
85}
86return (a, b, c, d, e);
87}
88
89() test5() impure {
90var (a, b, c, d, e) = foo(10, 20, 30, 40, 50);
91throw_unless(505, (a == 11) & (b == 22) & (c == 33) & (d == 44) & (e == 55));
92}
93
94() test6() impure {
95int a = 0;
96int b = 0;
97int c = 0;
98try {
99b = 3;
100} catch (x, y) {
101b = 12;
102}
103throw_unless(506, (a == 0) & (b == 3) & (c == 0));
104}
105
106() main() {
107test1();
108test2();
109test3();
110test4();
111test5();
112test6();
113}
114