X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/4aea4c6051739307ccbe0e2d87726ba39cb21dbb..94fd46f51034dc087c89b48ff1ab221fcfcb20d1:/test/test.sod diff --git a/test/test.sod b/test/test.sod index 47e8545..848a7d3 100644 --- a/test/test.sod +++ b/test/test.sod @@ -256,11 +256,20 @@ code c: tests { [link = SodObject, nick = t2] class T2: SodObject { [initarg = x] int x = 0; + [initarg = z] t2.x; initarg int y = 1; init { if (!y) STEP(0); } } +[link = T2] +class T2Sub: T2 { + [initarg = a] t2.x; + [initarg = b] t2.x; + [initarg = x] t2.x; + [initarg = c] t2.x; +} + code c: tests { prepare("initargs, defaults"); { SOD_DECL(T2, t, NO_KWARGS); @@ -272,6 +281,21 @@ code c: tests { if (t->t2.x == 42) STEP(1); DONE(2); } + prepare("initargs, inheritance"); + { SOD_DECL(T2Sub, t, KWARGS(K(c, 1) K(z, 2))); + if (t->t2.x == 1) STEP(0); + DONE(1); + } + prepare("initargs, ordering"); + { SOD_DECL(T2Sub, t, KWARGS(K(a, 1) K(b, 2))); + if (t->t2.x == 1) STEP(0); + DONE(1); + } + prepare("initargs, reprioritizing"); + { SOD_DECL(T2Sub, t, KWARGS(K(x, 1) K(c, 2))); + if (t->t2.x == 1) STEP(0); + DONE(1); + } } /*----- Keyword argument propagation --------------------------------------*/ @@ -310,7 +334,7 @@ class MyClass: SodClass { int x = -1, y, z = 2; } -[link = SodObject, nick = myobj, metaclass = MyClass] +[nick = myobj, metaclass = MyClass] class MyObject: SodObject { class mycls.x = 0, mycls.y = 1; }