From ef312564ca84a2b49fc291434d8fb2f8501bb618 Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Tue, 15 Nov 2016 13:00:01 +0100 Subject: Initial commit --- tests/expressionParser_test.ml | 83 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100755 tests/expressionParser_test.ml (limited to 'tests/expressionParser_test.ml') diff --git a/tests/expressionParser_test.ml b/tests/expressionParser_test.ml new file mode 100755 index 0000000..7c16233 --- /dev/null +++ b/tests/expressionParser_test.ml @@ -0,0 +1,83 @@ +open OUnit2 + +let u = UTF8.from_utf8string + +let _msg ~(expected:Expression.t) ~(result:Expression.t) = + Printf.sprintf "Expected %s but got %s" + (UTF8.encode @@ Expression.show @@ Expression.load_expr expected) + (UTF8.encode @@ Expression.show @@ Expression.load_expr result) + +let load_expr str = + Expression.Formula ( + Expression.Expression( + ExpressionParser.value ExpressionLexer.read + @@ Lexing.from_string str ) + ) + + +let test_num ctx = begin + + let expected = Expression.Formula ( + Expression.Expression ( + ScTypes.Value ( + ScTypes.Num ( + Num.num_of_int 1, Some (u"1"))))) in + let result = load_expr "=1" in + + assert_equal + ~msg:(_msg ~expected ~result) + expected + result +end + +let test_call ctx = begin + + let expected = Expression.Formula ( + Expression.Expression ( + ScTypes.Call ( + u"sum", []))) in + let result = load_expr "=sum()" in + + assert_equal + ~msg:(_msg ~expected ~result) + expected + result +end + +let test_call2 ctx = begin + + (* The expression "foo2(" has to be parsed as a function call, and not as a + reference to cell "FOO2", followed by another expression. *) + + let expected = Expression.Formula ( + Expression.Expression ( + ScTypes.Call ( + u"foo2", [ScTypes.Value (ScTypes.Num (Num.num_of_int 4, Some (u"4")))]))) in + let result = load_expr "=foo2(4)" in + + assert_equal + ~msg:(_msg ~expected ~result) + expected + result +end + +let test_ref ctx = begin + + let expected = Expression.Formula ( + Expression.Expression ( + ScTypes.Ref( + ScTypes.Cell ((1, 3), (false, false))))) in + let result = load_expr "=A3" in + + assert_equal + ~msg:(_msg ~expected ~result) + expected + result +end + +let tests = "expression_parser_test">::: [ + "test_num" >:: test_num; + "test_call" >:: test_call; + "test_call2" >:: test_call2; + "test_ref" >:: test_ref; +] -- cgit v1.2.3