12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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 literal_1 () =
- let actual =
- Get_type.literal _position [ T.Expression (Get_type.Raw Integer) ]
- and expected = Get_type.(Raw NumericString) in
- let msg = "" in
- Alcotest.(check' type_of ~msg ~expected ~actual)
- let literal_2 () =
- let actual =
- Get_type.literal _position
- Get_type.[ T.Text "1"; T.Expression (Raw Integer) ]
- and expected = Get_type.(Raw NumericString) in
- let msg = "" in
- Alcotest.(check' type_of ~msg ~expected ~actual)
- let literal_3 () =
- let actual =
- Get_type.literal _position
- Get_type.[ T.Text "b"; T.Expression (Raw Integer) ]
- and expected = Get_type.(Raw String) in
- let msg = "" in
- Alcotest.(check' type_of ~msg ~expected ~actual)
- let literal_4 () =
- let actual =
- Get_type.literal _position [ T.Expression (Get_type.Variable Integer) ]
- and expected = Get_type.(Variable NumericString) in
- let msg = "" 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;
- Alcotest.test_case "<<int>>" `Quick literal_1;
- Alcotest.test_case "1<<int>>" `Quick literal_2;
- Alcotest.test_case "b<<int>>" `Quick literal_3;
- Alcotest.test_case "<<$int>>" `Quick literal_4;
- ] )
|