summaryrefslogtreecommitdiff
path: root/Examples/test-suite/d/director_basic_runme.2.d
diff options
context:
space:
mode:
authorDavid Nadlinger <code@klickverbot.at>2010-11-18 00:24:02 +0000
committerDavid Nadlinger <code@klickverbot.at>2010-11-18 00:24:02 +0000
commit03aefbc6e95d094a6de231e1f5264c0946e209a3 (patch)
tree94dff73a4aa3c27366f29f36712bde78317c5776 /Examples/test-suite/d/director_basic_runme.2.d
parenta355d2d46af56c655816c37f24bb59fa6bade43f (diff)
downloadswig-03aefbc6e95d094a6de231e1f5264c0946e209a3.tar.gz
Added support for the D programming languge.
It is still a bit rough around some edges, particularly with regard to multi-threading and operator overloading, and there are some documentation bits missing, but it should be fine for basic use. The test-suite should build and run fine with the current versions of DMD, LDC and Tango (at least) on Linux x86_64 and Mac OS X 10.6. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12299 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'Examples/test-suite/d/director_basic_runme.2.d')
-rw-r--r--Examples/test-suite/d/director_basic_runme.2.d46
1 files changed, 46 insertions, 0 deletions
diff --git a/Examples/test-suite/d/director_basic_runme.2.d b/Examples/test-suite/d/director_basic_runme.2.d
new file mode 100644
index 000000000..877fcbc47
--- /dev/null
+++ b/Examples/test-suite/d/director_basic_runme.2.d
@@ -0,0 +1,46 @@
+module director_basic_runme;
+
+import std.exception;
+import director_basic.A1;
+import director_basic.Bar;
+import director_basic.Foo;
+import director_basic.MyClass;
+
+void main() {
+ auto a = new director_basic_MyFoo();
+ enforce(a.ping() == "director_basic_MyFoo::ping()", "a.ping()");
+ enforce(a.pong() == "Foo::pong();director_basic_MyFoo::ping()", "a.pong()");
+
+ auto b = new Foo();
+ enforce(b.ping() == "Foo::ping()", "b.ping()");
+ enforce(b.pong() == "Foo::pong();Foo::ping()", "b.pong()");
+
+ {
+ scope a1 = new A1(1, false);
+ }
+
+ auto my = new MyOverriddenClass();
+ my.expectNull = true;
+ enforce(MyClass.call_pmethod(my, null) is null, "null pointer conversion problem");
+ auto myBar = new Bar();
+ my.expectNull = false;
+ auto myNewBar = MyClass.call_pmethod(my, myBar);
+ enforce(myNewBar !is null, "non-null pointer conversion problem");
+ myNewBar.x = 10;
+}
+
+class director_basic_MyFoo : Foo {
+ public override string ping() {
+ return "director_basic_MyFoo::ping()";
+ }
+}
+
+class MyOverriddenClass : MyClass {
+ public bool expectNull = false;
+ public bool nonNullReceived = false;
+ public override Bar pmethod(Bar b) {
+ if (expectNull && (b !is null))
+ throw new Exception("null not received as expected");
+ return b;
+ }
+}