blob: 39f3bb202596761bd1e6b8f63feb59060a02bd53 (
plain)
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
|
module li_std_except_runme;
import tango.core.Exception;
import tango.io.Console;
import li_std_except.Test;
void main() {
with (new Test()) {
mixin(test("Exception", "throw_bad_exception"));
mixin(test("Exception", "throw_domain_error"));
mixin(test("Exception", "throw_exception"));
mixin(test("IllegalArgumentException", "throw_invalid_argument"));
mixin(test("NoSuchElementException", "throw_length_error"));
mixin(test("Exception", "throw_logic_error"));
mixin(test("NoSuchElementException", "throw_out_of_range"));
mixin(test("Exception", "throw_overflow_error"));
mixin(test("Exception", "throw_range_error"));
mixin(test("Exception", "throw_runtime_error"));
mixin(test("Exception", "throw_underflow_error"));
}
}
char[] test(char[] e, char[] f) {
return "if (!works!(" ~ e ~ ")(&" ~ f ~ ")) {\n" ~
"throw new Exception(\"" ~ f ~ " failed\");\n" ~
"}";
}
bool works(alias E, F)(F f) {
try {
try {
f();
} catch(E) {
return true;
}
} catch(Exception e) {
Cerr( "Received wrong exception: " ~ e.classinfo.name ).newline;
}
return false;
}
|