summaryrefslogtreecommitdiff
path: root/Examples/test-suite/d/member_pointer_runme.1.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/member_pointer_runme.1.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/member_pointer_runme.1.d')
-rw-r--r--Examples/test-suite/d/member_pointer_runme.1.d43
1 files changed, 43 insertions, 0 deletions
diff --git a/Examples/test-suite/d/member_pointer_runme.1.d b/Examples/test-suite/d/member_pointer_runme.1.d
new file mode 100644
index 000000000..c1f8d33b8
--- /dev/null
+++ b/Examples/test-suite/d/member_pointer_runme.1.d
@@ -0,0 +1,43 @@
+module member_pointer_runme;
+
+import Float = tango.text.convert.Float;
+import member_pointer.member_pointer;
+import member_pointer.Square;
+import member_pointer.SWIGTYPE_m_Shape__f_void__double;
+
+void main() {
+ auto s = new Square(10);
+
+ // Do some calculations
+ auto area_pt = areapt();
+ auto perim_pt = perimeterpt();
+ check("Square area ", 100.0, do_op(s, area_pt));
+ check("Square perim", 40.0, do_op(s, perim_pt));
+
+ SWIGTYPE_m_Shape__f_void__double memberPtr = null;
+ memberPtr = areavar;
+ memberPtr = perimetervar;
+
+ // Try the variables
+ check("Square area ", 100.0, do_op(s, areavar));
+ check("Square perim", 40.0, do_op(s, perimetervar));
+
+ // Modify one of the variables
+ areavar = perim_pt;
+ check("Square perimeter", 40.0, do_op(s,areavar));
+
+ // Try the constants
+ memberPtr = AREAPT;
+ memberPtr = PERIMPT;
+ memberPtr = NULLPT;
+
+ check("Square area", 100.0, do_op(s, AREAPT));
+ check("Square perim", 40.0, do_op(s, PERIMPT));
+}
+
+void check(char[] what, double expected, double actual) {
+ if (expected != actual) {
+ throw new Exception("Failed: " ~ what ~ ": expected "
+ ~ Float.toString(expected) ~ ", but got " ~ Float.toString(actual));
+ }
+}