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