]> gitweb.factorcode.org Git - factor.git/blob - extra/sequences/parser/parser-tests.factor
sequences.parser: tests for current, next, consume
[factor.git] / extra / sequences / parser / parser-tests.factor
1 USING: tools.test sequences.parser unicode kernel accessors ;
2
3 { "hello" }
4 [ "hello" [ take-rest ] parse-sequence ] unit-test
5
6 { "hi" " how are you?" }
7 [
8     "hi how are you?"
9     [ [ [ current blank? ] take-until ] [ take-rest ] bi ] parse-sequence
10 ] unit-test
11
12 { "foo" ";bar" }
13 [
14     "foo;bar" [
15         [ CHAR: ; take-until-object ] [ take-rest ] bi
16     ] parse-sequence
17 ] unit-test
18
19 { "foo " "and bar" }
20 [
21     "foo and bar" [
22         [ "and" take-until-sequence ] [ take-rest ] bi
23     ] parse-sequence
24 ] unit-test
25
26 { "foo " " bar" }
27 [
28     "foo and bar" [
29         [ "and" take-until-sequence ]
30         [ "and" take-sequence drop ]
31         [ take-rest ] tri
32     ] parse-sequence
33 ] unit-test
34
35 { "foo " " bar" }
36 [
37     "foo and bar" [
38         [ "and" take-until-sequence* ]
39         [ take-rest ] bi
40     ] parse-sequence
41 ] unit-test
42
43 { { 1 2 } }
44 [ { 1 2 3 4 } <sequence-parser> { 3 4 } take-until-sequence ] unit-test
45
46 { f "aaaa" }
47 [
48     "aaaa" <sequence-parser>
49     [ "b" take-until-sequence ] [ take-rest ] bi
50 ] unit-test
51
52 { 6 }
53 [
54     "      foo   " [ skip-whitespace n>> ] parse-sequence
55 ] unit-test
56
57 { { 1 2 } }
58 [ { 1 2 3 } <sequence-parser> [ current 3 = ] take-until ] unit-test
59
60 { "ab" }
61 [ "abcd" <sequence-parser> "ab" take-sequence ] unit-test
62
63 { f }
64 [ "abcd" <sequence-parser> "lol" take-sequence ] unit-test
65
66 { "ab" }
67 [
68     "abcd" <sequence-parser>
69     [ "lol" take-sequence drop ] [ "ab" take-sequence ] bi
70 ] unit-test
71
72 { "" }
73 [ "abcd" <sequence-parser> "" take-sequence ] unit-test
74
75 { "cd" }
76 [ "abcd" <sequence-parser> [ "ab" take-sequence drop ] [ "cd" take-sequence ] bi ] unit-test
77
78 { f }
79 [ "" <sequence-parser> take-rest ] unit-test
80
81 { f }
82 [ "abc" <sequence-parser> dup "abc" take-sequence drop take-rest ] unit-test
83
84 { f }
85 [ "abc" <sequence-parser> "abcdefg" take-sequence ] unit-test
86
87 { "1234" }
88 [ "1234f" <sequence-parser> take-integer ] unit-test
89
90 { "yes" }
91 [
92     "yes1234f" <sequence-parser>
93     [ take-integer drop ] [ "yes" take-sequence ] bi
94 ] unit-test
95
96 { f } [ "" <sequence-parser> 4 take-n ] unit-test
97 { "abcd" } [ "abcd" <sequence-parser> 4 take-n ] unit-test
98 { "abcd" "efg" } [ "abcdefg" <sequence-parser> [ 4 take-n ] [ take-rest ] bi ] unit-test
99
100 { f }
101 [ "\n" <sequence-parser> take-integer ] unit-test
102
103 { "\n" } [ "\n" <sequence-parser> [ ] take-while ] unit-test
104 { f } [ "\n" <sequence-parser> [ not ] take-while ] unit-test
105
106
107 { f } [
108     { } <sequence-parser> next
109 ] unit-test
110
111
112 { f } [
113     { } <sequence-parser> current
114 ] unit-test
115
116
117 { f } [
118     { } <sequence-parser> consume
119 ] unit-test
120
121
122 { 2 2 } [
123     { 2 1 3 7 } <sequence-parser> [ current ] [ current ] bi
124 ] unit-test
125
126
127 { 1 1 } [
128     { 2 1 3 7 } <sequence-parser> [ next ] [ current ] bi
129 ] unit-test
130
131
132 { 2 1 } [
133     { 2 1 3 7 } <sequence-parser> [ consume ] [ current ] bi
134 ] unit-test
135
136
137 { f } [
138     { 2 } <sequence-parser> next
139 ] unit-test
140
141
142 { 2 f } [
143     { 2 } <sequence-parser> [ consume ] [ current ] bi
144 ] unit-test