diff options
Diffstat (limited to 'Examples/test-suite/d/virtual_poly_runme.1.d')
-rw-r--r-- | Examples/test-suite/d/virtual_poly_runme.1.d | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/Examples/test-suite/d/virtual_poly_runme.1.d b/Examples/test-suite/d/virtual_poly_runme.1.d new file mode 100644 index 000000000..fb2e7814d --- /dev/null +++ b/Examples/test-suite/d/virtual_poly_runme.1.d @@ -0,0 +1,27 @@ +module virtual_poly_runme; + +import virtual_poly.NDouble; +import virtual_poly.NInt; +import virtual_poly.NNumber; + +void main() { + // D supports covariant (polymorphic) return types, so this should work like + // in C++. + auto d = new NDouble(3.5); + NDouble dc = d.copy(); + if (d.get() != dc.get()) { + throw new Exception("Test 1 failed."); + } + + auto i = new NInt(2); + NInt ic = i.copy(); + if (i.get() != ic.get()) { + throw new Exception("Test 2 failed."); + } + + NNumber n = d; + auto nd = cast(NDouble) n.copy(); + if (nd.get() != d.get()) { + throw new Exception("Test 3 failed."); + } +} |