blob: 0d7799dfe0d8f117cbad2d89692d2e46a5f6ef06 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
module Tree = Qsp_syntax.Tree
module Ast = Tree.Ast
module Check = Qsp_syntax.Check
module S = Qsp_syntax.S
module T = Qsp_syntax.T
let _test_instruction = Syntax._test_instruction
let _position = Syntax._position
let result =
[
Tree.Ast.Expression
(Tree.Ast.Literal
( _position,
[
T.Expression [ Tree.Ast.Literal (_position, [ T.Text "key" ]) ];
T.Text "";
] ));
]
(* String and escaped delimiter *)
let nested_squote () = _test_instruction "'<<''key''>>'" result
let nested_dquote () = _test_instruction {|"<<""key"">>"|} result
let long_quote () = _test_instruction {|{<<{key}>>}|} result
(* Mix bewteen string enclosing *)
let nested_string_literal2 () = _test_instruction {|"<<'key'>>"|} result
let nested_string_literal4 () = _test_instruction {|{<<'key'>>}|} result
(* The current state shall remain when we are inside an expression. *)
let nested_string_expression1 () = _test_instruction {|'<<(''key'')>>'|} result
let nested_string_expression2 () = _test_instruction {|"<<('key')>>"|} result
(* The block shall also interpreted when inside a comment *)
let nested_comment () = _test_instruction "!! '<<variable>>'" result
let test =
( "Literals",
[
Alcotest.test_case "Nested squote" `Quick nested_squote;
Alcotest.test_case "Nested string with literal2" `Quick
nested_string_literal2;
Alcotest.test_case "Nested dquote" `Quick nested_dquote;
Alcotest.test_case "Nested string with literal4" `Quick
nested_string_literal4;
Alcotest.test_case "Nested long_quote" `Quick long_quote;
Alcotest.test_case "Nested string with expression1" `Quick
nested_string_expression1;
Alcotest.test_case "Nested string with expression2" `Quick
nested_string_expression2;
Alcotest.test_case "Nested comment" `Quick nested_comment;
] )
|