]> gitweb.factorcode.org Git - factor.git/blob - basis/sequences/parser/parser-tests.factor
unicode: make this the API for all unicode things.
[factor.git] / basis / sequences / parser / parser-tests.factor
1 USING: tools.test sequences.parser unicode kernel accessors ;
2 IN: sequences.parser.tests
3
4 { "hello" }
5 [ "hello" [ take-rest ] parse-sequence ] unit-test
6
7 { "hi" " how are you?" }
8 [
9     "hi how are you?"
10     [ [ [ current blank? ] take-until ] [ take-rest ] bi ] parse-sequence
11 ] unit-test
12
13 { "foo" ";bar" }
14 [
15     "foo;bar" [
16         [ CHAR: ; take-until-object ] [ take-rest ] bi
17     ] parse-sequence
18 ] unit-test
19
20 { "foo " "and bar" }
21 [
22     "foo and bar" [
23         [ "and" take-until-sequence ] [ take-rest ] bi
24     ] parse-sequence
25 ] unit-test
26
27 { "foo " " bar" }
28 [
29     "foo and bar" [
30         [ "and" take-until-sequence ]
31         [ "and" take-sequence drop ]
32         [ take-rest ] tri
33     ] parse-sequence
34 ] unit-test
35
36 { "foo " " bar" }
37 [
38     "foo and bar" [
39         [ "and" take-until-sequence* ]
40         [ take-rest ] bi
41     ] parse-sequence
42 ] unit-test
43
44 { { 1 2 } }
45 [ { 1 2 3 4 } <sequence-parser> { 3 4 } take-until-sequence ] unit-test
46
47 { f "aaaa" }
48 [
49     "aaaa" <sequence-parser>
50     [ "b" take-until-sequence ] [ take-rest ] bi
51 ] unit-test
52
53 { 6 }
54 [
55     "      foo   " [ skip-whitespace n>> ] parse-sequence
56 ] unit-test
57
58 { { 1 2 } }
59 [ { 1 2 3 } <sequence-parser> [ current 3 = ] take-until ] unit-test
60
61 { "ab" }
62 [ "abcd" <sequence-parser> "ab" take-sequence ] unit-test
63
64 { f }
65 [ "abcd" <sequence-parser> "lol" take-sequence ] unit-test
66
67 { "ab" }
68 [
69     "abcd" <sequence-parser>
70     [ "lol" take-sequence drop ] [ "ab" take-sequence ] bi
71 ] unit-test
72
73 { "" }
74 [ "abcd" <sequence-parser> "" take-sequence ] unit-test
75
76 { "cd" }
77 [ "abcd" <sequence-parser> [ "ab" take-sequence drop ] [ "cd" take-sequence ] bi ] unit-test
78
79 { f }
80 [ "" <sequence-parser> take-rest ] unit-test
81
82 { f }
83 [ "abc" <sequence-parser> dup "abc" take-sequence drop take-rest ] unit-test
84
85 { f }
86 [ "abc" <sequence-parser> "abcdefg" take-sequence ] unit-test
87
88 { "1234" }
89 [ "1234f" <sequence-parser> take-integer ] unit-test
90
91 { "yes" }
92 [
93     "yes1234f" <sequence-parser>
94     [ take-integer drop ] [ "yes" take-sequence ] bi
95 ] unit-test
96
97 { f } [ "" <sequence-parser> 4 take-n ] unit-test
98 { "abcd" } [ "abcd" <sequence-parser> 4 take-n ] unit-test
99 { "abcd" "efg" } [ "abcdefg" <sequence-parser> [ 4 take-n ] [ take-rest ] bi ] unit-test
100
101 { f }
102 [ "\n" <sequence-parser> take-integer ] unit-test
103
104 { "\n" } [ "\n" <sequence-parser> [ ] take-while ] unit-test
105 { f } [ "\n" <sequence-parser> [ not ] take-while ] unit-test