summaryrefslogtreecommitdiff
path: root/Examples/test-suite/go/li_constraints_runme.go
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/go/li_constraints_runme.go')
-rw-r--r--Examples/test-suite/go/li_constraints_runme.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/Examples/test-suite/go/li_constraints_runme.go b/Examples/test-suite/go/li_constraints_runme.go
new file mode 100644
index 000000000..6dda260e4
--- /dev/null
+++ b/Examples/test-suite/go/li_constraints_runme.go
@@ -0,0 +1,70 @@
+package main
+
+import wrap "swigtests/li_constraints"
+import "fmt";
+
+func check_double(except bool, f func (float64), val float64, name string) {
+ actual := true
+ proper := false
+ func() {
+ defer func() {
+ r := recover();
+ if r != nil {
+ actual = false
+ proper = fmt.Sprintf("%s", r) == fmt.Sprintf("Expected a %s value.", name)
+ }
+ }()
+ f(val);
+ }()
+ if actual {
+ if !except {
+ panic(fmt.Sprintf("function '%s' with %d should perform an exception", name, val));
+ }
+ } else {
+ if except {
+ panic(fmt.Sprintf("function '%s' with %d should not perform an exception", name, val));
+ } else if !proper {
+ panic(fmt.Sprintf("function '%s' with %d should perform a proper exception", name, val));
+ }
+ }
+}
+
+func main() {
+ check_double(true, wrap.Test_nonnegative, 10, "non-negative");
+ check_double(true, wrap.Test_nonnegative, 0, "non-negative");
+ check_double(false, wrap.Test_nonnegative, -10, "non-negative");
+
+ check_double(false, wrap.Test_nonpositive, 10, "non-positive");
+ check_double(true, wrap.Test_nonpositive, 0, "non-positive");
+ check_double(true, wrap.Test_nonpositive, -10, "non-positive");
+
+ check_double(true, wrap.Test_positive, 10, "positive");
+ check_double(false, wrap.Test_positive, 0, "positive");
+ check_double(false, wrap.Test_positive, -10, "positive");
+
+ check_double(false, wrap.Test_negative, 10, "negative");
+ check_double(false, wrap.Test_negative, 0, "negative");
+ check_double(true, wrap.Test_negative, -10, "negative");
+
+ check_double(true, wrap.Test_nonzero, 10, "nonzero");
+ check_double(false, wrap.Test_nonzero, 0, "nonzero");
+ check_double(true, wrap.Test_nonzero, -10, "nonzero");
+
+ have_exception := false
+ func() {
+ defer func() {
+ r := recover()
+ if r != nil {
+ have_exception = "Received a NULL pointer." == fmt.Sprintf("%s", r)
+ }
+ }()
+ // The NULL value
+ // We can not use Go `nil` as is it can not be convert to a uintptr value.
+ wrap.Test_nonnull(uintptr(0));
+ }()
+ if !have_exception {
+ panic("test_nonnull should perform exception with 'null' value")
+ }
+ nonnull := wrap.Get_nonnull();
+ wrap.Test_nonnull(nonnull);
+}