aboutsummaryrefslogtreecommitdiff
path: root/test/literals.ml
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;
    ] )