diff options
Diffstat (limited to 'Examples/contract/simple_c')
| -rw-r--r-- | Examples/contract/simple_c/example.c | 11 | ||||
| -rw-r--r-- | Examples/contract/simple_c/example.i | 19 | ||||
| -rw-r--r-- | Examples/contract/simple_c/runme1.py | 17 | ||||
| -rw-r--r-- | Examples/contract/simple_c/runme2.py | 20 |
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) |
