From 824f2987d47e87d58ee2a4a96d7be417aad6aeab Mon Sep 17 00:00:00 2001 From: Sébastien Dailly Date: Wed, 31 Jan 2018 13:20:20 +0100 Subject: API refactoring : made the GADT abstract, provide contructor for each case, and deported the expression with evaluation with module functors --- tests/sheet_test.ml | 80 +++++++++++++++++++++++++++-------------------------- 1 file changed, 41 insertions(+), 39 deletions(-) (limited to 'tests/sheet_test.ml') diff --git a/tests/sheet_test.ml b/tests/sheet_test.ml index 3960c4b..dfa8da4 100755 --- a/tests/sheet_test.ml +++ b/tests/sheet_test.ml @@ -4,6 +4,8 @@ module Option = Tools.Option let u = UTF8.from_utf8string +let catalog = Functions.C.compile @@ Functions.built_in Functions.C.empty + let _msg ~expected ~result = begin let get_string v = match v with @@ -16,17 +18,17 @@ let _msg ~expected ~result = begin (get_string result) end -let build_num value = ScTypes.number @@ DataType.Num.of_int value +let build_num value = ScTypes.Type.number @@ DataType.Num.of_int value (** Test a simple references between two cells *) let test_create_ref_1 ctx = begin let s = Sheet.Raw.empty - |> Sheet.Raw.add (3,3) @@ Expression.load @@ u"=-1" - |> snd |> Sheet.Raw.add (0,0) @@ Expression.load @@ u"=C3" + |> Sheet.Raw.add (3,3) (Expression.load @@ u"=-1") catalog + |> snd |> Sheet.Raw.add (0,0) (Expression.load @@ u"=C3") catalog |> snd in let result = (Sheet.Raw.get_value (0, 0) s) in - let expected = Some (ScTypes.Result (build_num (-1))) in + let expected = Some (ScTypes.Result.Ok (build_num (-1))) in assert_equal ~msg:(_msg ~expected ~result) @@ -37,14 +39,14 @@ end let test_create_ref_2 ctx = begin let s = Sheet.Raw.empty - |> Sheet.Raw.add (2,2) @@ Expression.load @@ u"=C3" - |> snd |> Sheet.Raw.add (3,3) @@ Expression.load @@ u"=A1" - |> snd |> Sheet.Raw.add (1,1) @@ Expression.load @@ u"123" + |> Sheet.Raw.add (2,2) (Expression.load @@ u"=C3") catalog + |> snd |> Sheet.Raw.add (3,3) (Expression.load @@ u"=A1") catalog + |> snd |> Sheet.Raw.add (1,1) (Expression.load @@ u"123") catalog |> snd in let result = (Sheet.Raw.get_value (2, 2) s) in - let expected = Some (ScTypes.Result (build_num 123)) in + let expected = Some (ScTypes.Result.Ok (build_num 123)) in assert_equal ~msg:(_msg ~expected ~result) @@ -55,10 +57,10 @@ end let test_create_direct_cycle ctx = begin let s = Sheet.Raw.empty - |> Sheet.Raw.add (2,2) @@ Expression.load @@ u"=B2 + 1" + |> Sheet.Raw.add (2,2) (Expression.load @@ u"=B2 + 1") catalog |> snd in let result = (Sheet.Raw.get_value (2, 2) s) in - let expected = Some (ScTypes.Error Errors.TypeError) in + let expected = Some (ScTypes.Result.Error Errors.TypeError) in assert_equal ~msg:(_msg ~expected ~result) @@ -70,11 +72,11 @@ end let test_recover_from_cycle ctx = begin let s = Sheet.Raw.empty - |> Sheet.Raw.add (2,2) @@ Expression.load @@ u"=B2 + 1" - |> snd |> Sheet.Raw.add (2,2) @@ Expression.load @@ u"=6" + |> Sheet.Raw.add (2,2) (Expression.load @@ u"=B2 + 1") catalog + |> snd |> Sheet.Raw.add (2,2) (Expression.load @@ u"=6") catalog |> snd in let result = (Sheet.Raw.get_value (2, 2) s) in - let expected = Some (ScTypes.Result (build_num (6))) in + let expected = Some (ScTypes.Result.Ok (build_num (6))) in assert_equal ~msg:(_msg ~expected ~result) @@ -85,13 +87,13 @@ end let test_create_indirect_cycle ctx = begin let s = Sheet.Raw.empty - |> Sheet.Raw.add (2,2) @@ Expression.load @@ u"=A1" - |> snd |> Sheet.Raw.add (1,1) @@ Expression.load @@ u"=2" - |> snd |> Sheet.Raw.add (1,1) @@ Expression.load @@ u"=B2+1" - |> snd |> Sheet.Raw.add (0,0) @@ Expression.load @@ u"=A1" + |> Sheet.Raw.add (2,2) (Expression.load @@ u"=A1") catalog + |> snd |> Sheet.Raw.add (1,1) (Expression.load @@ u"=2") catalog + |> snd |> Sheet.Raw.add (1,1) (Expression.load @@ u"=B2+1") catalog + |> snd |> Sheet.Raw.add (0,0) (Expression.load @@ u"=A1") catalog |> snd in let result = (Sheet.Raw.get_value (0, 0) s) in - let expected = Some (ScTypes.Error Errors.Cycle) in + let expected = Some (ScTypes.Result.Error Errors.Cycle) in assert_equal ~msg:(_msg ~expected ~result) @@ -103,18 +105,18 @@ let test_check_cycle3 ctx = begin let s = Sheet.Raw.empty (* First set A1 to 3 *) - |> Sheet.Raw.add (1,1) @@ Expression.load @@ u"=3" - |> snd |> Sheet.Raw.add (1,2) @@ Expression.load @@ u"=A1" - |> snd |> Sheet.Raw.add (2,2) @@ Expression.load @@ u"=A1" - |> snd |> Sheet.Raw.add (5,5) @@ Expression.load @@ u"=B2" + |> Sheet.Raw.add (1,1) (Expression.load @@ u"=3") catalog + |> snd |> Sheet.Raw.add (1,2) (Expression.load @@ u"=A1") catalog + |> snd |> Sheet.Raw.add (2,2) (Expression.load @@ u"=A1") catalog + |> snd |> Sheet.Raw.add (5,5) (Expression.load @@ u"=B2") catalog (* A3 = A1 + A1 = 6 *) - |> snd |> Sheet.Raw.add (1,3) @@ Expression.load @@ u"=A2 + E5" + |> snd |> Sheet.Raw.add (1,3) (Expression.load @@ u"=A2 + E5") catalog (* Then set A1 to 2 *) - |> snd |> Sheet.Raw.add (1,1) @@ Expression.load @@ u"=2" + |> snd |> Sheet.Raw.add (1,1) (Expression.load @@ u"=2") catalog |> snd in let result = (Sheet.Raw.get_value (1, 3) s) in (* A3 = A1 + A1 = 4 *) - let expected = Some (ScTypes.Result (build_num 4)) in + let expected = Some (ScTypes.Result.Ok (build_num 4)) in assert_equal ~msg:(_msg ~expected ~result) @@ -125,10 +127,10 @@ end let test_delete ctx = begin let s = Sheet.Raw.empty - |> Sheet.Raw.add (2,2) @@ Expression.load @@ u"=C3" - |> snd |> Sheet.Raw.add (3,3) @@ Expression.load @@ u"=A1" - |> snd |> Sheet.Raw.remove (2,2) - |> snd |> Sheet.Raw.remove (3,3) + |> Sheet.Raw.add (2,2) (Expression.load @@ u"=C3") catalog + |> snd |> Sheet.Raw.add (3,3) (Expression.load @@ u"=A1") catalog + |> snd |> Sheet.Raw.remove (2,2) catalog + |> snd |> Sheet.Raw.remove (3,3) catalog |> snd in let result = (Sheet.Raw.get_value (3, 3) s) in let expected = None in @@ -142,10 +144,10 @@ end let test_update_succs1 ctx = begin let result = Sheet.Raw.empty - |> Sheet.Raw.add (1,1) @@ Expression.load @@ u" =1" - |> snd |> Sheet.Raw.add (2,2) @@ Expression.load @@ u"=A2" - |> snd |> Sheet.Raw.add (1,2) @@ Expression.load @@ u"=A1/1" - |> snd |> Sheet.Raw.add (1,1) @@ Expression.load @@ u"=2" + |> Sheet.Raw.add (1,1) (Expression.load @@ u" =1") catalog + |> snd |> Sheet.Raw.add (2,2) (Expression.load @@ u"=A2") catalog + |> snd |> Sheet.Raw.add (1,2) (Expression.load @@ u"=A1/1") catalog + |> snd |> Sheet.Raw.add (1,1) (Expression.load @@ u"=2") catalog |> fst in (* All the cells are updated by the change *) @@ -163,10 +165,10 @@ end let test_update_succs2 ctx = begin let result = Sheet.Raw.empty - |> Sheet.Raw.add (1,1) @@ Expression.load @@ u"=1" - |> snd |> Sheet.Raw.add (2,2) @@ Expression.load @@ u"=A2" - |> snd |> Sheet.Raw.add (1,2) @@ Expression.load @@ u"=A1/0" - |> snd |> Sheet.Raw.add (1,1) @@ Expression.load @@ u"=2" + |> Sheet.Raw.add (1,1) (Expression.load @@ u"=1") catalog + |> snd |> Sheet.Raw.add (2,2) (Expression.load @@ u"=A2") catalog + |> snd |> Sheet.Raw.add (1,2) (Expression.load @@ u"=A1/0") catalog + |> snd |> Sheet.Raw.add (1,1) (Expression.load @@ u"=2") catalog |> fst in (* Only (1, 1) is updated ; (2, 2) does not change, neither (2, 2) *) let expected = Cell.Set.of_list [(1,1)] in @@ -178,10 +180,10 @@ end let test_paste_undo ctx = begin - let empty = Sheet.create Sheet.Raw.empty in + let empty = Sheet.create catalog Sheet.Raw.empty in (* The expected result for the whole test *) - let expected = Some (ScTypes.Result (ScTypes.number (DataType.Num.of_int 6))) in + let expected = Some (ScTypes.Result.Ok (ScTypes.Type.number (DataType.Num.of_int 6))) in let sheet = empty |> Tools.Option.test @@ Sheet.move (Actions.Absolute (2, 1)) -- cgit v1.2.3