aboutsummaryrefslogtreecommitdiff
path: root/tests/expressions/evaluate_test.ml
diff options
context:
space:
mode:
Diffstat (limited to 'tests/expressions/evaluate_test.ml')
-rw-r--r--tests/expressions/evaluate_test.ml55
1 files changed, 55 insertions, 0 deletions
diff --git a/tests/expressions/evaluate_test.ml b/tests/expressions/evaluate_test.ml
new file mode 100644
index 0000000..e571831
--- /dev/null
+++ b/tests/expressions/evaluate_test.ml
@@ -0,0 +1,55 @@
+open OUnit2
+
+open Functions
+let f_string = ScTypes.ReturnType.f_string
+
+let u = UTF8.from_utf8string
+
+let catalog = Functions.C.compile (
+ Functions.built_in Functions.C.empty
+ |> Functions.C.register3 "register3" (t_int, t_int, t_int) f_string
+ (fun a b c -> u "register3")
+)
+
+let _msg ~(expected:ScTypes.Result.t) ~(result:ScTypes.Result.t) =
+ Printf.sprintf "Expected %s but got %s"
+ (UTF8.raw_encode @@ ScTypes.Result.show expected)
+ (UTF8.raw_encode @@ ScTypes.Result.show result)
+
+module M = BuildExpression.M(Evaluate)
+
+let test_value_string e = begin
+ assert_equal
+ (ScTypes.Result.Ok (ScTypes.Type.string @@ u "This is a test string"))
+ (M.string (catalog, fun _ -> None))
+end
+
+let test_value_date e = begin
+
+ let expected = ScTypes.Result.Ok (ScTypes.Type.date DataType.Num.zero)
+ and result = M.date0 (catalog, fun _ -> None) in
+
+ assert_equal
+ ~msg:(_msg ~expected ~result)
+ expected result
+end
+
+let test_evaluate0 e = begin
+ assert_equal
+ (ScTypes.Result.Ok (ScTypes.Type.boolean true))
+ (M.true0 (catalog, fun _ -> None))
+end
+
+let test_evaluate3 e = begin
+ assert_equal
+ (ScTypes.Result.Ok (ScTypes.Type.string @@ u "register3"))
+ (M.f3 (catalog, fun _ -> None))
+end
+
+let tests = "evaluate_test">::: [
+ "test_value_string" >:: test_value_string;
+ "test_value_date" >:: test_value_date;
+ "test_evaluate0" >:: test_evaluate0;
+ "test_evaluate3" >:: test_evaluate3;
+]
+