summaryrefslogtreecommitdiff
path: root/Examples/test-suite/ruby/li_constraints_runme.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/ruby/li_constraints_runme.rb')
-rw-r--r--Examples/test-suite/ruby/li_constraints_runme.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/Examples/test-suite/ruby/li_constraints_runme.rb b/Examples/test-suite/ruby/li_constraints_runme.rb
new file mode 100644
index 000000000..a4dcd685a
--- /dev/null
+++ b/Examples/test-suite/ruby/li_constraints_runme.rb
@@ -0,0 +1,63 @@
+#!/usr/bin/env ruby
+
+require 'li_constraints'
+include Li_constraints
+
+def check_double(except, fn, f, val)
+ actual = true
+ proper = false
+ begin
+ fn.call(val)
+ rescue => e
+ actual = false
+ proper = e.class == ArgumentError && e.message == "Expected a #{f} value."
+ end
+ if actual
+ if !except
+ raise RuntimeError, "function '#{f}' with #{val} should perform an exception"
+ end
+ else
+ if except
+ raise RuntimeError, "function '#{f}' with #{val} should not perform an exception"
+ elsif !proper
+ raise RuntimeError, "function '#{f}' with #{val} should perform a proper exception"
+ end
+ end
+end
+
+nonnegative = -> (v) { test_nonnegative(v) }
+check_double(true, nonnegative, "non-negative", 10)
+check_double(true, nonnegative, "non-negative", 0)
+check_double(false, nonnegative, "non-negative", -10)
+
+nonpositive = -> (v) { test_nonpositive(v) }
+check_double(false, nonpositive, "non-positive", 10)
+check_double(true, nonpositive, "non-positive", 0)
+check_double(true, nonpositive, "non-positive", -10)
+
+positive = -> (v) { test_positive(v) }
+check_double(true, positive, "positive", 10)
+check_double(false, positive, "positive", 0)
+check_double(false, positive, "positive", -10)
+
+negative = -> (v) { test_negative(v) }
+check_double(false, negative, "negative", 10)
+check_double(false, negative, "negative", 0)
+check_double(true, negative, "negative", -10)
+
+nonzero = -> (v) { test_nonzero(v) }
+check_double(true, nonzero, "nonzero", 10)
+check_double(false, nonzero, "nonzero", 0)
+check_double(true, nonzero, "nonzero", -10)
+
+have_exception = false
+begin
+ test_nonnull(nil)
+rescue => e
+ have_exception = e.class == ArgumentError && e.message == "Received a NULL pointer."
+end
+if not have_exception
+ raise RuntimeError, "test_nonnull should perform exception with 'null' value"
+end
+nonnull = get_nonnull()
+test_nonnull(nonnull)