(load "throw_exception.so") (define-macro (check-throw expr check) `(if (handle-exceptions exvar (if ,check #f (begin (print "Error executing: " ',expr " " exvar) (exit 1))) ,expr #t) (print "Expression did not throw an error: " ',expr))) (define f (new-Foo)) (check-throw (Foo-test-int f) (= exvar 37)) (check-throw (Foo-test-msg f) (string=? exvar "Dead")) (check-throw (Foo-test-cls f) (test-is-Error exvar)) (check-throw (Foo-test-cls-ptr f) (test-is-Error exvar)) (check-throw (Foo-test-cls-ref f) (test-is-Error exvar)) (check-throw (Foo-test-cls-td f) (test-is-Error exvar)) (check-throw (Foo-test-cls-ptr-td f) (test-is-Error exvar)) (check-throw (Foo-test-cls-ref-td f) (test-is-Error exvar)) (check-throw (Foo-test-enum f) (= exvar (enum2))) ; don't know how to test this... it is returning a SWIG wrapped int * ;(check-throw (Foo-test-array f) (equal? exvar '(0 1 2 3 4 5 6 7 8 9))) (check-throw (Foo-test-multi f 1) (= exvar 37)) (check-throw (Foo-test-multi f 2) (string=? exvar "Dead")) (check-throw (Foo-test-multi f 3) (test-is-Error exvar)) (set! f #f) (gc #t) (exit 0)