]> gitweb.factorcode.org Git - factor.git/blob - extra/modern/modern-tests.factor
Reformat
[factor.git] / extra / modern / modern-tests.factor
1 ! Copyright (C) 2017 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: modern modern.slices multiline tools.test ;
4 IN: modern.tests
5
6 { f } [ "" upper-colon? ] unit-test
7 { t } [ ":" upper-colon? ] unit-test
8 { t } [ "::" upper-colon? ] unit-test
9 { t } [ ":::" upper-colon? ] unit-test
10 { t } [ "FOO:" upper-colon? ] unit-test
11 { t } [ "FOO::" upper-colon? ] unit-test
12 { t } [ "FOO:::" upper-colon? ] unit-test
13
14 ! 'FOO:
15 { f } [ "'" upper-colon? ] unit-test
16 { t } [ "':" upper-colon? ] unit-test
17 { t } [ "'::" upper-colon? ] unit-test
18 { t } [ "':::" upper-colon? ] unit-test
19 { t } [ "'FOO:" upper-colon? ] unit-test
20 { t } [ "'FOO::" upper-colon? ] unit-test
21 { t } [ "'FOO:::" upper-colon? ] unit-test
22
23 ! \FOO: is not an upper-colon form, it is deactivated by the \
24 { f } [ "\\" upper-colon? ] unit-test
25 { f } [ "\\:" upper-colon? ] unit-test
26 { f } [ "\\::" upper-colon? ] unit-test
27 { f } [ "\\:::" upper-colon? ] unit-test
28 { f } [ "\\FOO:" upper-colon? ] unit-test
29 { f } [ "\\FOO::" upper-colon? ] unit-test
30 { f } [ "\\FOO:::" upper-colon? ] unit-test
31
32
33 ! Comment
34 {
35     { { "!" "" } }
36 } [ "!" string>literals >strings ] unit-test
37
38 {
39     { { "!" " lol" } }
40 } [ "! lol" string>literals >strings ] unit-test
41
42 {
43     { "lol!" }
44 } [ "lol!" string>literals >strings ] unit-test
45
46 {
47     { { "!" "lol" } }
48 } [ "!lol" string>literals >strings ] unit-test
49
50 ! Colon
51 {
52     { ":asdf:" }
53 } [ ":asdf:" string>literals >strings ] unit-test
54
55 {
56     { { "one:" { "1" } } }
57 } [ "one: 1" string>literals >strings ] unit-test
58
59 {
60     { { "two::" { "1" "2" } } }
61 } [ "two:: 1 2" string>literals >strings ] unit-test
62
63 {
64     { "1" ":>" "one" }
65 } [ "1 :> one" string>literals >strings ] unit-test
66
67 {
68     { { ":" { "foo" } ";" } }
69 } [ ": foo ;" string>literals >strings ] unit-test
70
71 {
72     {
73         { "FOO:" { "a" } }
74         { "BAR:" { "b" } }
75     }
76 } [ "FOO: a BAR: b" string>literals >strings ] unit-test
77
78 {
79     { { "FOO:" { "a" } ";" } }
80 } [ "FOO: a ;" string>literals >strings ] unit-test
81
82 {
83     { { "FOO:" { "a" } "FOO;" } }
84 } [ "FOO: a FOO;" string>literals >strings ] unit-test
85
86
87 ! Acute
88 {
89     { { "<A" { } "A>" } }
90 } [ "<A A>" string>literals >strings ] unit-test
91
92 {
93     { { "<B:" { "hi" } ";B>" } }
94 } [ "<B: hi ;B>" string>literals >strings ] unit-test
95
96 { { "<foo>" } } [ "<foo>" string>literals >strings ] unit-test
97 { { ">foo<" } } [ ">foo<" string>literals >strings ] unit-test
98
99 { { "foo>" } } [ "foo>" string>literals >strings ] unit-test
100 { { ">foo" } } [ ">foo" string>literals >strings ] unit-test
101 { { ">foo>" } } [ ">foo>" string>literals >strings ] unit-test
102 { { ">>foo>" } } [ ">>foo>" string>literals >strings ] unit-test
103 { { ">>foo>>" } } [ ">>foo>>" string>literals >strings ] unit-test
104
105 { { "foo<" } } [ "foo<" string>literals >strings ] unit-test
106 { { "<foo" } } [ "<foo" string>literals >strings ] unit-test
107 { { "<foo<" } } [ "<foo<" string>literals >strings ] unit-test
108 { { "<<foo<" } } [ "<<foo<" string>literals >strings ] unit-test
109 { { "<<foo<<" } } [ "<<foo<<" string>literals >strings ] unit-test
110
111 ! Backslash \AVL{ foo\bar foo\bar{
112 {
113     { { "SYNTAX:" { "\\AVL{" } } }
114 } [ "SYNTAX: \\AVL{" string>literals >strings ] unit-test
115
116 [ "\\" string>literals >strings ] must-fail ! \ alone should be legal eventually (?)
117
118 { { "\\FOO" } } [ "\\FOO" string>literals >strings ] unit-test
119
120 {
121     { "foo\\bar" }
122 } [ "foo\\bar" string>literals >strings ] unit-test
123
124 [ "foo\\bar{" string>literals >strings ] must-fail
125
126 {
127     { { "foo\\bar{" { "1" } "}" } }
128 } [ "foo\\bar{ 1 }" string>literals >strings ] unit-test
129
130 { { { "char:" { "\\{" } } } } [ "char: \\{" string>literals >strings ] unit-test
131 [ "char: {" string>literals >strings ] must-fail
132 [ "char: [" string>literals >strings ] must-fail
133 [ "char: {" string>literals >strings ] must-fail
134 [ "char: \"" string>literals >strings ] must-fail
135 ! { { { "char:" { "\\\\" } } } } [ "char: \\\\" string>literals >strings ] unit-test
136
137 [ "char: \\" string>literals >strings ] must-fail ! char: \ should be legal eventually
138
139 { { { "\\" { "(" } } } } [ "\\ (" string>literals >strings ] unit-test
140
141 { { "\\[[" } } [ "\\[[" string>literals >strings ] unit-test
142 { { "\\[=[" } } [ "\\[=[" string>literals >strings ] unit-test
143 { { "\\[==[" } } [ "\\[==[" string>literals >strings ] unit-test
144
145
146 { t } [ "FOO:" strict-upper? ] unit-test
147 { t } [ ":" strict-upper? ] unit-test
148 { f } [ "<FOO" strict-upper? ] unit-test
149 { f } [ "<FOO:" strict-upper? ] unit-test
150 { f } [ "->" strict-upper? ] unit-test
151 { f } [ "FOO>" strict-upper? ] unit-test
152 { f } [ ";FOO>" strict-upper? ] unit-test
153
154 { f } [ "FOO" section-open? ] unit-test
155 { f } [ "FOO:" section-open? ] unit-test
156 { f } [ ";FOO" section-close? ] unit-test
157 { f } [ "FOO" section-close? ] unit-test
158
159
160 ! Strings
161 {
162     { { "url\"" "google.com" "\"" } }
163 } [ [[ url"google.com" ]] string>literals >strings ] unit-test
164
165 {
166     { { "\"" "google.com" "\"" } }
167 } [ [[ "google.com" ]] string>literals >strings ] unit-test
168
169 {
170     {
171         { "(" { "a" "b" } ")" }
172         { "[" { "a" "b" "+" } "]" }
173         { "(" { "c" } ")" }
174     }
175 } [ "( a b ) [ a b + ] ( c )" string>literals >strings ] unit-test
176
177 ![[
178 ! Concatenated syntax
179 {
180     {
181         {
182             { "(" { "a" "b" } ")" }
183             { "[" { "a" "b" "+" } "]" }
184             { "(" { "c" } ")" }
185         }
186     }
187 } [ "( a b )[ a b + ]( c )" string>literals >strings ] unit-test
188
189 {
190     {
191         {
192             { "\"" "abc" "\"" }
193             { "[" { "0" } "]" }
194         }
195     }
196 } [ "\"abc\"[ 0 ]" string>literals >strings ] unit-test
197 ]]
198
199
200 {
201     {
202         { "<FOO" { { "BAR:" { "bar" } } } "FOO>" }
203     }
204 } [ "<FOO BAR: bar FOO>" string>literals >strings ] unit-test
205
206 {
207     {
208         { "<FOO:" { "foo" { "BAR:" { "bar" } } } ";FOO>" }
209     }
210 } [ "<FOO: foo BAR: bar ;FOO>" string>literals >strings ] unit-test
211
212
213 ![[
214 {
215     {
216         {
217             {
218                 "foo::"
219                 {
220                     {
221                         { "<FOO" { } "FOO>" }
222                         { "[" { "0" } "]" }
223                         { "[" { "1" } "]" }
224                         { "[" { "2" } "]" }
225                         { "[" { "3" } "]" }
226                     }
227                     { { "<BAR" { } "BAR>" } }
228                 }
229             }
230         }
231     }
232 } [ "foo:: <FOO FOO>[ 0 ][ 1 ][ 2 ][ 3 ] <BAR BAR>" string>literals >strings ] unit-test
233 ]]
234
235 {
236     {
237         { "foo::" { { "<FOO" { } "FOO>" } { "[" { "0" } "]" } } }
238         { "[" { "1" } "]" }
239         { "[" { "2" } "]" }
240         { "[" { "3" } "]" }
241         { "<BAR" { } "BAR>" }
242     }
243 } [ "foo:: <FOO FOO> [ 0 ] [ 1 ] [ 2 ] [ 3 ] <BAR BAR>" string>literals >strings ] unit-test