summaryrefslogtreecommitdiff
path: root/Examples/contract/simple_c
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/contract/simple_c')
-rw-r--r--Examples/contract/simple_c/example.c11
-rw-r--r--Examples/contract/simple_c/example.i19
-rw-r--r--Examples/contract/simple_c/runme1.py17
-rw-r--r--Examples/contract/simple_c/runme2.py20
4 files changed, 67 insertions, 0 deletions
diff --git a/Examples/contract/simple_c/example.c b/Examples/contract/simple_c/example.c
new file mode 100644
index 0000000..85a3e14
--- /dev/null
+++ b/Examples/contract/simple_c/example.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+
+int Circle (int x, int y, int radius) {
+ /* Draw Circle */
+ printf("Drawing the circle...\n");
+ /* Return -1 to test contract post assertion */
+ if (radius == 2)
+ return -1;
+ else
+ return 1;
+}
diff --git a/Examples/contract/simple_c/example.i b/Examples/contract/simple_c/example.i
new file mode 100644
index 0000000..49df09a
--- /dev/null
+++ b/Examples/contract/simple_c/example.i
@@ -0,0 +1,19 @@
+/* File : example.i */
+
+/* Basic C example for swig contract */
+/* Tiger, University of Chicago, 2003 */
+
+%module example
+
+%contract Circle (int x, int y, int radius) {
+require:
+ x >= 0;
+ y >= 0;
+ radius > x;
+ensure:
+ Circle >= 0;
+}
+
+%inline %{
+extern int Circle (int x, int y, int radius);
+%}
diff --git a/Examples/contract/simple_c/runme1.py b/Examples/contract/simple_c/runme1.py
new file mode 100644
index 0000000..abd8df6
--- /dev/null
+++ b/Examples/contract/simple_c/runme1.py
@@ -0,0 +1,17 @@
+import example
+# Call the Circle() function correctly
+
+x = 1;
+y = 1;
+r = 3;
+
+c = example.Circle(x, y, r)
+
+# test post-assertion
+x = 1;
+y = 1;
+r = 2;
+
+c = example.Circle(x, y, r)
+
+print "The return value of Circle(%d, %d, %d) is %d" % (x,y,r,c)
diff --git a/Examples/contract/simple_c/runme2.py b/Examples/contract/simple_c/runme2.py
new file mode 100644
index 0000000..48d4a3f
--- /dev/null
+++ b/Examples/contract/simple_c/runme2.py
@@ -0,0 +1,20 @@
+import example
+
+# Call the Circle() function correctly
+
+x = 1;
+y = 1;
+r = 3;
+
+c = example.Circle(x, y, r)
+
+print "The return value of Circle(%d, %d, %d) is %d" % (x,y,r,c)
+
+# test pre-assertion
+x = 1;
+y = -1;
+r = 3;
+
+c = example.Circle(x, y, r)
+
+print "The return value of Circle(%d, %d, %d) is %d" % (x,y,r,c)