aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorChimrod <>2024-09-13 09:25:38 +0200
committerChimrod <>2024-09-13 09:25:38 +0200
commit8b4eb01afa698dd1e512f7a83fb761bfb146fdf7 (patch)
tree5c85e5f4d011a895955d8516f0cdb195acf82f24 /test
parent692d66ba7eb0ff55a46b68601b7cd81f825653cb (diff)
Added a syntax check in the comments
Diffstat (limited to 'test')
-rw-r--r--test/qsp_parser_test.ml3
-rw-r--r--test/syntax.ml34
-rw-r--r--test/syntax_error.ml7
3 files changed, 35 insertions, 9 deletions
diff --git a/test/qsp_parser_test.ml b/test/qsp_parser_test.ml
index ada04d3..43f9cb3 100644
--- a/test/qsp_parser_test.ml
+++ b/test/qsp_parser_test.ml
@@ -1,7 +1,8 @@
let () =
Alcotest.run "qsp_parser"
[
- Syntax.test;
+ Syntax.test_syntax;
+ Syntax.test_comments;
Literals.test;
Syntax_error.test;
Get_type.test;
diff --git a/test/syntax.ml b/test/syntax.ml
index f15c72f..f922e4f 100644
--- a/test/syntax.ml
+++ b/test/syntax.ml
@@ -400,6 +400,18 @@ life is unfair." Oh yeah, {curly brackets
also count}. This is still the same comment. |}
[ Comment _position ]
+let test_comment_string () =
+ _test_instruction {|! {}|} [ Comment _position ];
+ _test_instruction {|! ''|} [ Comment _position ];
+ _test_instruction {|! ""|} [ Comment _position ];
+ _test_instruction {|! {''}|} [ Comment _position ];
+ _test_instruction {|! {""}|} [ Comment _position ];
+ _test_instruction {|! "{"|} [ Comment _position ];
+ _test_instruction {|! '{'|} [ Comment _position ];
+ _test_instruction {|! "'"|} [ Comment _position ];
+ _test_instruction {|! '"'|} [ Comment _position ];
+ ()
+
(** This test ensure that the unary operator is applied to the whole expression
*)
let test_precedence () =
@@ -882,7 +894,7 @@ let test_stattxt () =
{ Tree.Ast.pos = _position; name = "$STATTXT"; index = None } );
]
-let test =
+let test_syntax =
( "Syntax",
[
Alcotest.test_case "Location" `Quick test_empty_location;
@@ -915,13 +927,6 @@ let test =
Alcotest.test_case "Plus_litt" `Quick test_plus_litt;
Alcotest.test_case "PlusChained" `Quick test_concat;
Alcotest.test_case "Mod operator" `Quick test_mod;
- Alcotest.test_case "Comment" `Quick test_comment;
- Alcotest.test_case "Comment2" `Quick test_comment2;
- Alcotest.test_case "Comment3" `Quick test_comment3;
- Alcotest.test_case "Comment4" `Quick test_comment4;
- Alcotest.test_case "Comment5" `Quick test_comment5;
- Alcotest.test_case "Comment6" `Quick test_comment6;
- Alcotest.test_case "Multiline Comment" `Quick test_long_comment;
Alcotest.test_case "If" `Quick test_if;
Alcotest.test_case "If_chained" `Quick test_if_chained;
Alcotest.test_case "If_equality" `Quick test_if_equality;
@@ -952,3 +957,16 @@ let test =
Alcotest.test_case "Precedence8" `Quick test_precedence8;
Alcotest.test_case "stattxt" `Quick test_stattxt;
] )
+
+let test_comments =
+ ( "Comments",
+ [
+ Alcotest.test_case "Simple Comment" `Quick test_comment;
+ Alcotest.test_case "& Comment" `Quick test_comment2;
+ Alcotest.test_case "Double Comment" `Quick test_comment3;
+ Alcotest.test_case "Comment vs operation" `Quick test_comment4;
+ Alcotest.test_case "Comment5" `Quick test_comment5;
+ Alcotest.test_case "Comment6" `Quick test_comment6;
+ Alcotest.test_case "Multiline Comment" `Quick test_long_comment;
+ Alcotest.test_case "Comments with strings" `Quick test_comment_string;
+ ] )
diff --git a/test/syntax_error.ml b/test/syntax_error.ml
index 2187e89..b92cf28 100644
--- a/test/syntax_error.ml
+++ b/test/syntax_error.ml
@@ -94,6 +94,12 @@ let unclose_comment () =
_test_instruction {| ! that's it|}
{ level = Error; loc = _position; message = "Unclosed string" }
+(* Same but with nested string *)
+
+let unclose_comment2 () =
+ _test_instruction {| !{ that's it }|}
+ { level = Error; loc = _position; message = "Unclosed string" }
+
let syntax_error () =
_test_instruction {|*clr $ cla|}
{ level = Error; loc = _position; message = "Unexpected character \"\"" }
@@ -275,6 +281,7 @@ let test =
Alcotest.test_case "act 1" `Quick act_no_column;
Alcotest.test_case "no &" `Quick missing_ampersand;
Alcotest.test_case "unclose_comment" `Quick unclose_comment;
+ Alcotest.test_case "unclose_comment2" `Quick unclose_comment2;
Alcotest.test_case "Syntax error $" `Quick syntax_error;
Alcotest.test_case "Missing operand" `Quick missing_operand;
Alcotest.test_case "Unknown function" `Quick unknow_function;