aboutsummaryrefslogtreecommitdiff
path: root/tests/text.nom
blob: 72eebaca863142061a9e063522eaac10e1e4c8dd (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
#..
    Tests for the stuff defined in lib/text.nom

use "core"

assume ((["x","y"] joined with ",") = "x,y") or barf "joined with failed"
assume ((["x","y"] joined) = "xy") or barf "joined failed"
assume (("asdf" capitalized) = "Asdf") or barf "capitalized failed"
assume (("asdf" with "X" instead of "s") = "aXdf") or barf "substitution failed"
# TODO: add tests for indent/dedent
assume ("\n" = (newline)) or barf "Text literals failed."
%x <- "\(green)hello\(reset color)"
assume (("x" + "y") = "xy")

say "Text test passed."

immediately
    parse [アクション %spec %body] as: action %spec %body

%こんにちは <- "こんにちは"
アクション [% と言う]
    "\(%)世界"

assume ((%こんにちは と言う) = "こんにちは世界") or barf "Unicode doesn't work"

%s <- ".."
    one two\nthree\
    ..four
assume (%s = "one two\\nthreefour")
%s <- ".."
    list:\[..]
        1,2,3
    ..
assume (%s = "list:{1, 2, 3}")

assume
    ".."
        foo = \
            1 + 2
        ..!
    ..= "foo = 3!"

assume 
    ".."
        one\"\n"two
    ..= "one\ntwo"

assume
    ".."
        no\ # Comment
        #comment
        #..
            block comment
        ..gap
    ..= "nogap"