| module default_args_runme; |
| |
| import default_args.default_args; |
| import default_args.ConstMethods; |
| import default_args.EnumClass; |
| import default_args.Except; |
| import default_args.Foo; |
| import default_args.Klass; |
| import default_args.Statics; |
| import default_args.Tricky; |
| |
| void main() { |
| if (anonymous() != 7771) |
| throw new Exception("anonymous (1) failed"); |
| if (anonymous(1234) != 1234) |
| throw new Exception("anonymous (2) failed"); |
| |
| if (booltest() != true) |
| throw new Exception("booltest (1) failed"); |
| if (booltest(true) != true) |
| throw new Exception("booltest (2) failed"); |
| if (booltest(false) != false) |
| throw new Exception("booltest (3) failed"); |
| |
| auto ec = new EnumClass(); |
| if (ec.blah() != true) |
| throw new Exception("EnumClass failed"); |
| |
| if (casts1() != null) |
| throw new Exception("casts1 failed"); |
| |
| if (casts2() != "Hello") |
| throw new Exception("casts2 failed"); |
| |
| if (casts1("Ciao") != "Ciao") |
| throw new Exception("casts1 not default failed"); |
| |
| if (chartest1() != 'x') |
| throw new Exception("chartest1 failed"); |
| |
| if (chartest2() != '\0') |
| throw new Exception("chartest2 failed"); |
| |
| if (chartest1('y') != 'y') |
| throw new Exception("chartest1 not default failed"); |
| |
| if (chartest1('y') != 'y') |
| throw new Exception("chartest1 not default failed"); |
| |
| if (reftest1() != 42) |
| throw new Exception("reftest1 failed"); |
| |
| if (reftest1(400) != 400) |
| throw new Exception("reftest1 not default failed"); |
| |
| if (reftest2() != "hello") |
| throw new Exception("reftest2 failed"); |
| |
| // rename |
| auto foo = new Foo(); |
| foo.newname(); |
| foo.newname(10); |
| foo.renamed3arg(10, 10.0); |
| foo.renamed2arg(10); |
| foo.renamed1arg(); |
| |
| // exception specifications |
| testException( { exceptionspec(); }, "exceptionspec 1" ); |
| testException( { exceptionspec(-1); }, "exceptionspec 2" ); |
| testException( { exceptionspec(100); }, "exceptionspec 3" ); |
| |
| auto ex = new Except(false); |
| testException( { ex.exspec(); }, "exspec 1" ); |
| testException( { ex.exspec(-1); }, "exspec 2" ); |
| testException( { ex.exspec(100); }, "exspec 3" ); |
| testException( { ex = new Except(true); }, "Except constructor 1" ); |
| testException( { ex = new Except(true, -2); }, "Except constructor 2" ); |
| |
| // Default parameters in static class methods |
| if (Statics.staticmethod() != 10+20+30) |
| throw new Exception("staticmethod 1 failed"); |
| if (Statics.staticmethod(100) != 100+20+30) |
| throw new Exception("staticmethod 2 failed"); |
| if (Statics.staticmethod(100,200,300) != 100+200+300) |
| throw new Exception("staticmethod 3 failed"); |
| |
| |
| auto tricky = new Tricky(); |
| if (tricky.privatedefault() != 200) |
| throw new Exception("privatedefault failed"); |
| if (tricky.protectedint() != 2000) |
| throw new Exception("protectedint failed"); |
| if (tricky.protecteddouble() != 987.654) |
| throw new Exception("protecteddouble failed"); |
| if (tricky.functiondefault() != 500) |
| throw new Exception("functiondefault failed"); |
| if (tricky.contrived() != 'X') |
| throw new Exception("contrived failed"); |
| |
| if (constructorcall().val != -1) |
| throw new Exception("constructorcall test 1 failed"); |
| |
| if (constructorcall(new Klass(2222)).val != 2222) |
| throw new Exception("constructorcall test 2 failed"); |
| |
| if (constructorcall(new Klass()).val != -1) |
| throw new Exception("constructorcall test 3 failed"); |
| |
| // const methods |
| auto cm = new ConstMethods(); |
| if (cm.coo() != 20) |
| throw new Exception("coo test 1 failed"); |
| if (cm.coo(1.0) != 20) |
| throw new Exception("coo test 2 failed"); |
| } |
| |
| void testException(void delegate() command, char[] testName) { |
| bool didntThrow; |
| try { |
| command(); |
| didntThrow = true; |
| } catch (Exception e) {} |
| |
| if (didntThrow) { |
| throw new Exception(testName ~ " failed"); |
| } |
| } |