diff options
| author | Chimrod <> | 2023-10-30 08:22:39 +0100 | 
|---|---|---|
| committer | Chimrod <> | 2023-11-02 14:53:02 +0100 | 
| commit | 05f74bee05c0c56da593a5e89069711d5993e3b1 (patch) | |
| tree | d09dbc7fb8228b8091a48f7d4bf5f095638f2bad /test/literals.ml | |
| parent | a1bb96e73f54eaa7c7e4af5d930e9d10074afb08 (diff) | |
Managed the strings in strings
Diffstat (limited to 'test/literals.ml')
| -rw-r--r-- | test/literals.ml | 64 | 
1 files changed, 62 insertions, 2 deletions
| diff --git a/test/literals.ml b/test/literals.ml index 0d7799d..6070f86 100644 --- a/test/literals.ml +++ b/test/literals.ml @@ -20,7 +20,7 @@ let result =  (* String and escaped delimiter *) -let nested_squote () = _test_instruction "'<<''key''>>'" result +let nested_squote () = _test_instruction {|'<<''key''>>'|} result  let nested_dquote () = _test_instruction {|"<<""key"">>"|} result  let long_quote () = _test_instruction {|{<<{key}>>}|} result @@ -36,7 +36,63 @@ 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 nested_comment () = +  _test_instruction {|!'<<expr>>'|} [ Tree.Ast.Comment _position ]; +  _test_instruction {|!"<<expr>>"|} [ Tree.Ast.Comment _position ]; +  _test_instruction {|!{<<expr>>}|} [ Tree.Ast.Comment _position ] + +let comment2 () = +  _test_instruction {|!"text <<expr>>"|} [ Tree.Ast.Comment _position ]; +  _test_instruction {|!{text <<expr>>}|} [ Tree.Ast.Comment _position ]; +  _test_instruction {|!'text <<expr>>'|} [ Tree.Ast.Comment _position ] + +(** A single quote inside a string does not mean we are starting nested string + *) +let direct_text () = +  _test_instruction {|"don't"|} +    [ Tree.Ast.Expression (Tree.Ast.Literal (_position, [ T.Text "don't" ])) ]; +  _test_instruction {|'don"t'|} +    [ Tree.Ast.Expression (Tree.Ast.Literal (_position, [ T.Text "don\"t" ])) ]; +  _test_instruction {|'don{t'|} +    [ Tree.Ast.Expression (Tree.Ast.Literal (_position, [ T.Text "don{t" ])) ] + +let elements_sequence () = +  _test_instruction {|"'<<$array[''key'']>>'"|} +    [ +      Tree.Ast.Expression +        (Tree.Ast.Literal (_position, [ T.Text "'<<$array[''key'']>>'" ])); +    ] + +let expression () = +  _test_instruction {|'<<iif(var=0,1,0)>>'|} +    [ +      Tree.Ast.Expression +        (Tree.Ast.Literal +           ( _position, +             [ +               T.Expression +                 [ +                   Tree.Ast.Function +                     ( _position, +                       T.Iif, +                       [ +                         Tree.Ast.BinaryOp +                           ( _position, +                             T.Eq, +                             Tree.Ast.Ident +                               { +                                 Tree.Ast.pos = _position; +                                 name = "VAR"; +                                 index = None; +                               }, +                             Tree.Ast.Integer (_position, "0") ); +                         Tree.Ast.Integer (_position, "1"); +                         Tree.Ast.Integer (_position, "0"); +                       ] ); +                 ]; +               T.Text ""; +             ] )); +    ]  let test =    ( "Literals", @@ -53,4 +109,8 @@ let test =        Alcotest.test_case "Nested string with expression2" `Quick          nested_string_expression2;        Alcotest.test_case "Nested comment" `Quick nested_comment; +      Alcotest.test_case "Comment2" `Quick comment2; +      Alcotest.test_case "Quote in string" `Quick direct_text; +      Alcotest.test_case "elements_sequence" `Quick elements_sequence; +      Alcotest.test_case "expression" `Quick expression;      ] ) | 
