mirror of https://github.com/swig/swig
71 lines
2.2 KiB
Go
71 lines
2.2 KiB
Go
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);
|
|
}
|