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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
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");
}
}
|