/trunk/Examples/test-suite/d/li_std_except_runme.1.d
D | 40 lines | 36 code | 4 blank | 0 comment | 0 complexity | b659d0ffe013ff596d881092d1eb3038 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- 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;
- }