aboutsummaryrefslogtreecommitdiff
path: root/tests/text.nom
blob: e42fe733e9de8a5917f477a2c1382aa0276eaae2 (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 core/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"
assume ("\n" = (newline)) or barf "Text literals failed."
assume (("x" + "y") = "xy")
assume ((lines in "one\ntwo") = ["one", "two"])

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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

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

%s <- ".."
    one two\nthree\
    ..four
assume (%s = "one two\\nthreefour") or barf "%s = \(quote %s), not \(quote "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
        #
            block comment
        ..gap
    ..= "nogap"

say "Text test passed."