diff options
Diffstat (limited to 'test/get_type.ml')
-rw-r--r-- | test/get_type.ml | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/test/get_type.ml b/test/get_type.ml new file mode 100644 index 0000000..d7bb333 --- /dev/null +++ b/test/get_type.ml @@ -0,0 +1,45 @@ +module Get_type = Qsp_syntax.Get_type +module T = Qsp_syntax.T + +let _position = (Lexing.dummy_pos, Lexing.dummy_pos) + +let type_of : Get_type.t Alcotest.testable = + Alcotest.testable Get_type.pp Get_type.equal + +let add_number () = + let actual = + Get_type.boperator _position T.Plus + (Get_type.integer _position "0") + (Get_type.integer _position "1") + in + let expected = Get_type.(Raw Integer) in + let msg = "Adding integer" in + Alcotest.(check' type_of ~msg ~expected ~actual) + +let add_literal_number () = + let actual = + Get_type.boperator _position T.Plus + (Get_type.literal _position [ T.Text "2" ]) + (Get_type.integer _position "1") + in + let expected = Get_type.(Raw Integer) in + let msg = "A string containing integer is considered as integer" in + Alcotest.(check' type_of ~msg ~expected ~actual) + +let concat_text () = + let actual = + Get_type.boperator _position T.Plus + (Get_type.literal _position [ T.Text "a" ]) + (Get_type.integer _position "1") + in + let expected = Get_type.(Raw String) in + let msg = "Concatenate" in + Alcotest.(check' type_of ~msg ~expected ~actual) + +let test = + ( "Type expression", + [ + Alcotest.test_case "int + int" `Quick add_number; + Alcotest.test_case "'int' + int" `Quick add_literal_number; + Alcotest.test_case "str + int" `Quick concat_text; + ] ) |