diff options
Diffstat (limited to 'Examples/test-suite/d/li_std_except_runme.1.d')
-rw-r--r-- | Examples/test-suite/d/li_std_except_runme.1.d | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/Examples/test-suite/d/li_std_except_runme.1.d b/Examples/test-suite/d/li_std_except_runme.1.d new file mode 100644 index 000000000..39f3bb202 --- /dev/null +++ b/Examples/test-suite/d/li_std_except_runme.1.d @@ -0,0 +1,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; +} |