It is still a bit rough around some edges, particularly with regard to multi-threading and operator overloading, and there are some documentation bits missing, but it should be fine for basic use. The test-suite should build and run fine with the current versions of DMD, LDC and Tango (at least) on Linux x86_64 and Mac OS X 10.6. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12299 626c5289-ae23-0410-ae9c-e8d60b6d4f22
40 lines
1.1 KiB
D
40 lines
1.1 KiB
D
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;
|
|
}
|