Ton

Форк
0
/
tc1.fc 
113 строк · 1.7 Кб
1
() test1() impure {
2
  int i = 3;
3
  repeat (3) {
4
    try {
5
      int j = i;
6
      i *= 2;
7
      throw_unless(500, j <= 10);
8
    } catch (x, e) {
9
      i -= 2;
10
    }
11
    i += i + 1;
12
  }
13
  throw_unless(501, i == 43);
14
}
15

16
int divide_by_ten(int num) {
17
  try {
18
    throw_unless(500, num < 10);
19
  } catch (x, e) {
20
    return divide_by_ten(num - 10) + 1;
21
  }
22
  return 0;
23
}
24

25
() test2() impure {
26
  int n = divide_by_ten(37);
27
  throw_unless(502, n == 3);
28
}
29

30
(int, int) swap_int(int a, int b) {
31
  try {
32
    a = a * b;
33
    b = a / b;
34
    a = a / b;
35
    return (a, b);
36
  } catch (x, e) {
37
    throw_unless(500, b == 0);
38
  }
39
  return (0, a);
40
}
41

42
() test3() impure {
43
  int a = 0;
44
  int b = 57;
45
  try {
46
    (a, b) = swap_int(a, b);
47
  } catch (x, e) {
48
    throw_unless(500, a == 0);
49
    a = b;
50
    b = 0;
51
  }
52
  throw_unless(503, (a == 57) & (b == 0));
53
}
54

55
int get_x(int x, int y) {
56
  try {
57
  } catch (x, e) {
58
    return -1;
59
  }
60
  return x;
61
}
62

63
int get_y(int x, int y) {
64
  try {
65
    return -1;
66
  } catch (x, e) {
67
  }
68
  return y;
69
}
70

71
() test4() impure {
72
  throw_unless(504, get_x(3, 4) == 3);
73
  throw_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) {
77
  try {
78
    throw(11);
79
  } catch (x, y) {
80
    a += 1;
81
    b += 2;
82
    c += 3;
83
    d += 4;
84
    e += 5;
85
  }
86
  return (a, b, c, d, e);
87
}
88

89
() test5() impure {
90
  var (a, b, c, d, e) = foo(10, 20, 30, 40, 50);
91
  throw_unless(505, (a == 11) & (b == 22) & (c == 33) & (d == 44) & (e == 55));
92
}
93

94
() test6() impure {
95
  int a = 0;
96
  int b = 0;
97
  int c = 0;
98
  try {
99
    b = 3;
100
  }  catch (x, y) {
101
    b = 12;
102
  }
103
  throw_unless(506, (a == 0) & (b == 3) & (c == 0));
104
}
105

106
() main() {
107
  test1();
108
  test2();
109
  test3();
110
  test4();
111
  test5();
112
  test6();
113
}
114

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.