|
1 "{ Encoding: utf8 }" |
|
2 |
|
3 "{ Package: 'stx:goodies/petitparser/tests' }" |
|
4 |
|
5 "{ NameSpace: Smalltalk }" |
|
6 |
|
7 PPAbstractParserTest subclass:#PPExtensionTest |
|
8 instanceVariableNames:'' |
|
9 classVariableNames:'' |
|
10 poolDictionaries:'' |
|
11 category:'PetitTests-Tests' |
|
12 ! |
|
13 |
|
14 |
|
15 !PPExtensionTest methodsFor:'testing-parser'! |
|
16 |
|
17 testCharacter |
|
18 | parser | |
|
19 parser := $a asParser. |
|
20 self assert: parser parse: 'a' to: $a. |
|
21 self assert: parser fail: 'b' |
|
22 ! |
|
23 |
|
24 testChoice |
|
25 | parser | |
|
26 parser := #(1 2) asChoiceParser. |
|
27 self assert: parser parse: #(1) to: 1. |
|
28 self assert: parser parse: #(2) to: 2. |
|
29 self assert: parser parse: #(1 2) to: 1 end: 1. |
|
30 self assert: parser parse: #(2 1) to: 2 end: 1. |
|
31 self assert: parser fail: #(). |
|
32 self assert: parser fail: #(3) |
|
33 ! |
|
34 |
|
35 testClosure |
|
36 | parser | |
|
37 parser := [ :stream | stream upTo: $s ] asParser. |
|
38 self assert: parser parse: '' to: ''. |
|
39 self assert: parser parse: 'a' to: 'a'. |
|
40 self assert: parser parse: 'aa' to: 'aa'. |
|
41 self assert: parser parse: 's' to: ''. |
|
42 self assert: parser parse: 'as' to: 'a'. |
|
43 self assert: parser parse: 'aas' to: 'aa'. |
|
44 self assert: parser parse: 'sa' to: '' end: 1. |
|
45 self assert: parser parse: 'saa' to: '' end: 1. |
|
46 |
|
47 parser := [ :stream | stream upTo: $s. PPFailure message: 'stream' at: stream position ] asParser. |
|
48 self assert: parser fail: ''. |
|
49 self assert: parser fail: 's'. |
|
50 self assert: parser fail: 'as' |
|
51 |
|
52 ! |
|
53 |
|
54 testEpsilon |
|
55 | parser | |
|
56 parser := nil asParser. |
|
57 self assert: parser asParser = parser |
|
58 ! |
|
59 |
|
60 testOrdered |
|
61 | parser | |
|
62 parser := #(1 2) asParser. |
|
63 self assert: parser parse: #(1 2) to: #(1 2). |
|
64 self assert: parser parse: #(1 2 3) to: #(1 2) end: 2. |
|
65 self assert: parser fail: #(). |
|
66 self assert: parser fail: #(1). |
|
67 self assert: parser fail: #(1 1). |
|
68 self assert: parser fail: #(1 1 2) |
|
69 ! |
|
70 |
|
71 testParser |
|
72 | parser | |
|
73 parser := $a asParser. |
|
74 self assert: parser asParser = parser |
|
75 ! |
|
76 |
|
77 testRange |
|
78 | parser | |
|
79 parser := ($a to: $c) asParser. |
|
80 self assert: parser parse: 'a' to: $a. |
|
81 self assert: parser parse: 'b' to: $b. |
|
82 self assert: parser parse: 'c' to: $c. |
|
83 self assert: parser fail: 'd' |
|
84 ! |
|
85 |
|
86 testSequence |
|
87 | parser | |
|
88 parser := #(1 2) asSequenceParser. |
|
89 self assert: parser parse: #(1 2) to: #(1 2). |
|
90 self assert: parser parse: #(1 2 3) to: #(1 2) end: 2. |
|
91 self assert: parser fail: #(). |
|
92 self assert: parser fail: #(1). |
|
93 self assert: parser fail: #(1 1). |
|
94 self assert: parser fail: #(1 1 2) |
|
95 ! |
|
96 |
|
97 testString |
|
98 | parser | |
|
99 parser := 'ab' asParser. |
|
100 self assert: parser parse: 'ab' to: 'ab'. |
|
101 self assert: parser parse: 'aba' to: 'ab' end: 2. |
|
102 self assert: parser parse: 'abb' to: 'ab' end: 2. |
|
103 self assert: parser fail: 'a'. |
|
104 self assert: parser fail: 'ac' |
|
105 ! |
|
106 |
|
107 testSymbol |
|
108 | parser | |
|
109 parser := #any asParser. |
|
110 self assert: parser parse: 'a'. |
|
111 self assert: parser fail: '' |
|
112 ! |
|
113 |
|
114 testUnordered |
|
115 | parser | |
|
116 parser := #(1 2) asSet asParser. |
|
117 self assert: parser parse: #(1) to: 1. |
|
118 self assert: parser parse: #(2) to: 2. |
|
119 self assert: parser parse: #(1 2) to: 1 end: 1. |
|
120 self assert: parser parse: #(2 1) to: 2 end: 1. |
|
121 self assert: parser fail: #(). |
|
122 self assert: parser fail: #(3) |
|
123 ! ! |
|
124 |
|
125 !PPExtensionTest methodsFor:'testing-stream'! |
|
126 |
|
127 testStream |
|
128 | stream | |
|
129 stream := 'abc' readStream asPetitStream. |
|
130 self assert: (stream class = PPStream). |
|
131 self assert: (stream printString = '·abc'). |
|
132 self assert: (stream peek) = $a. |
|
133 self assert: (stream uncheckedPeek = $a). |
|
134 self assert: (stream next) = $a. |
|
135 self assert: (stream printString = 'a·bc'). |
|
136 self assert: (stream asPetitStream = stream) |
|
137 ! |
|
138 |
|
139 testText |
|
140 | stream | |
|
141 stream := 'abc' asText asPetitStream. |
|
142 self assert: stream class = PPStream |
|
143 ! ! |
|
144 |
|
145 !PPExtensionTest class methodsFor:'documentation'! |
|
146 |
|
147 version |
|
148 ^ '$Header$' |
|
149 ! |
|
150 |
|
151 version_CVS |
|
152 ^ '$Header$' |
|
153 ! ! |
|
154 |