9 |
9 |
10 |
10 |
11 !PPPredicateTest methodsFor:'private'! |
11 !PPPredicateTest methodsFor:'private'! |
12 |
12 |
13 charactersDo: aBlock |
13 charactersDo: aBlock |
14 "cg: isn't 256 one too many?" |
14 1 to: 256 do: [ :index | aBlock value: (Character codePoint: index) ] |
15 |
|
16 Smalltalk isSmalltalkX ifTrue:[ |
|
17 0 to: 255 do: [ :index | aBlock value: (Character codePoint: index) ] |
|
18 ] ifFalse:[ |
|
19 1 to: 256 do: [ :index | aBlock value: (Character codePoint: index) ] |
|
20 ]. |
|
21 ! ! |
15 ! ! |
22 |
16 |
23 !PPPredicateTest methodsFor:'testing'! |
17 !PPPredicateTest methodsFor:'testing'! |
24 |
18 |
25 testOnMessage |
19 testOnMessage |
26 | block parser | |
20 | block parser | |
27 block := [ :char | char = $* ]. |
21 block := [ :char | char = $* ]. |
28 parser := PPPredicateObjectParser on: block message: 'starlet'. |
22 parser := PPPredicateObjectParser on: block message: 'starlet'. |
29 self assert: parser block = block. |
23 self assert: parser block equals: block. |
30 self assert: parser message = 'starlet'. |
24 self assert: parser message equals: 'starlet'. |
31 |
25 self assertCharacterSets: parser. |
|
26 self assert: parser parse: '*' to: $*. |
|
27 self |
|
28 assert: parser |
|
29 parse: '**' |
|
30 to: $* |
|
31 end: 1. |
|
32 self assert: parser fail: ''. |
|
33 self assert: parser fail: '1'. |
|
34 self assert: parser fail: 'a' |
|
35 ! ! |
|
36 |
|
37 !PPPredicateTest methodsFor:'testing-chars'! |
|
38 |
|
39 testBlank |
|
40 | parser | |
|
41 parser := #blank asParser. |
|
42 self assertCharacterSets: parser. |
|
43 self assert: parser parse: (String with: Character space) to: Character space. |
|
44 self assert: parser parse: (String with: Character tab) to: Character tab. |
|
45 self assert: parser fail: ''. |
|
46 self assert: parser fail: '1'. |
|
47 self assert: parser fail: (String with: Character cr) |
|
48 ! |
|
49 |
|
50 testChar |
|
51 | parser | |
|
52 parser := $* asParser. |
32 self assertCharacterSets: parser. |
53 self assertCharacterSets: parser. |
33 self assert: parser parse: '*' to: $*. |
54 self assert: parser parse: '*' to: $*. |
34 self assert: parser parse: '**' to: $* end: 1. |
55 self assert: parser parse: '**' to: $* end: 1. |
35 self assert: parser fail: ''. |
56 self assert: parser fail: ''. |
36 self assert: parser fail: '1'. |
57 self assert: parser fail: '1'. |
37 self assert: parser fail: 'a' |
58 self assert: parser fail: 'a' |
38 ! ! |
|
39 |
|
40 !PPPredicateTest methodsFor:'testing-chars'! |
|
41 |
|
42 testBlank |
|
43 | parser cr| |
|
44 parser := #blank asParser. |
|
45 self assertCharacterSets: parser. |
|
46 self assert: parser parse: (String with: Character space) to: Character space. |
|
47 self assert: parser parse: (String with: Character tab) to: Character tab. |
|
48 self assert: parser fail: ''. |
|
49 self assert: parser fail: '1'. |
|
50 cr := Smalltalk isSmalltalkX |
|
51 ifTrue:[Character return] |
|
52 ifFalse:[Character cr]. |
|
53 self assert: parser fail: (String with: cr) |
|
54 ! |
|
55 |
|
56 testChar |
|
57 | parser | |
|
58 parser := $* asParser. |
|
59 self assertCharacterSets: parser. |
|
60 self assert: parser parse: '*' to: $*. |
|
61 self assert: parser parse: '**' to: $* end: 1. |
|
62 self assert: parser fail: ''. |
|
63 self assert: parser fail: '1'. |
|
64 self assert: parser fail: 'a' |
|
65 ! |
59 ! |
66 |
60 |
67 testCr |
61 testCr |
68 | parser cr | |
62 | parser | |
69 |
63 parser := #cr asParser. |
70 cr := Smalltalk isSmalltalkX |
64 self assertCharacterSets: parser. |
71 ifTrue:[Character return] |
65 self assert: parser parse: (String with: Character cr) to: Character cr |
72 ifFalse:[Character cr]. |
|
73 |
|
74 parser := #cr asParser. |
|
75 self assertCharacterSets: parser. |
|
76 self assert: parser parse: (String with: cr) to: cr |
|
77 ! |
66 ! |
78 |
67 |
79 testDigit |
68 testDigit |
80 | parser | |
69 | parser | |
81 parser := #digit asParser. |
70 parser := #digit asParser. |
130 self assert: parser fail: 'A'. |
119 self assert: parser fail: 'A'. |
131 self assert: parser fail: '0' |
120 self assert: parser fail: '0' |
132 ! |
121 ! |
133 |
122 |
134 testNewline |
123 testNewline |
135 | parser cr| |
124 | parser | |
136 cr := Smalltalk isSmalltalkX |
125 parser := #newline asParser. |
137 ifTrue:[Character return] |
126 self assertCharacterSets: parser. |
138 ifFalse:[Character cr]. |
127 self assert: parser parse: (String with: Character cr) to: Character cr. |
139 parser := #newline asParser. |
128 self assert: parser parse: (String with: Character lf) to: Character lf. |
140 self assertCharacterSets: parser. |
129 self assert: parser fail: ' ' |
141 self assert: parser parse: (String with: cr) to: cr. |
|
142 self assert: parser parse: (String with: Character lf) to: Character lf. |
|
143 self assert: parser fail: ' ' |
|
144 ! |
130 ! |
145 |
131 |
146 testPunctuation |
132 testPunctuation |
147 | parser | |
133 | parser | |
148 parser := #punctuation asParser. |
134 parser := #punctuation asParser. |
160 self assertCharacterSets: parser. |
146 self assertCharacterSets: parser. |
161 self assert: parser parse: (String with: Character tab) to: Character tab. |
147 self assert: parser parse: (String with: Character tab) to: Character tab. |
162 self assert: parser parse: ' ' to: Character space. |
148 self assert: parser parse: ' ' to: Character space. |
163 self assert: parser fail: ''. |
149 self assert: parser fail: ''. |
164 self assert: parser fail: 'a' |
150 self assert: parser fail: 'a' |
|
151 ! |
|
152 |
|
153 testStartOfLine |
|
154 | parser | |
|
155 parser := #startOfLine asParser, #any asParser star. |
|
156 |
|
157 self assert: parser parse: 'lorem ipsum'. |
|
158 |
|
159 parser := #any asParser, #startOfLine asParser, #any asParser star. |
|
160 self assert: parser fail: 'lorem ipsum'. |
|
161 |
|
162 parser := #startOfLine asParser, #any asParser, #startOfLine asParser, #any asParser star. |
|
163 self assert: parser parse: String cr, 'lorem ipsum'. |
|
164 self assert: parser parse: String lf, 'lorem ipsum'. |
|
165 self assert: parser fail: String crlf, 'lorem ipsum'. |
|
166 |
|
167 self assert: parser fail: String crlf. |
|
168 self assert: parser parse: String cr. |
|
169 self assert: parser parse: String lf. |
|
170 |
|
171 parser := #startOfLine asParser, #any asParser, #any asParser, #startOfLine asParser, #any asParser star. |
|
172 self assert: parser parse: String crlf, 'lorem ipsum'. |
|
173 self assert: parser parse: String crlf. |
165 ! |
174 ! |
166 |
175 |
167 testTab |
176 testTab |
168 | parser | |
177 | parser | |
169 parser := #tab asParser. |
178 parser := #tab asParser. |
246 |
255 |
247 !PPPredicateTest methodsFor:'testing-sequence'! |
256 !PPPredicateTest methodsFor:'testing-sequence'! |
248 |
257 |
249 testSequenceParser |
258 testSequenceParser |
250 | parser | |
259 | parser | |
251 parser := PPPredicateSequenceParser |
260 parser := PPPredicateSequenceParser |
252 on: [ :value | value first isUppercase ] |
261 on: [ :value | value first isUppercase ] |
253 message: 'uppercase 3 letter words' |
262 message: 'uppercase 3 letter words' |
254 size: 3. |
263 size: 3. |
255 self assert: parser size = 3. |
264 self assert: parser size equals: 3. |
256 self assert: parser parse: 'Abc'. |
265 self assert: parser parse: 'Abc'. |
257 self assert: parser parse: 'ABc'. |
266 self assert: parser parse: 'ABc'. |
258 self assert: parser parse: 'ABC'. |
267 self assert: parser parse: 'ABC'. |
259 self assert: parser fail: 'abc'. |
268 self assert: parser fail: 'abc'. |
260 self assert: parser fail: 'aBC'. |
269 self assert: parser fail: 'aBC'. |
261 self assert: parser fail: 'Ab'. |
270 self assert: parser fail: 'Ab'. |
262 |
|
263 parser := parser negate. |
271 parser := parser negate. |
264 self assert: parser size = 3. |
272 self assert: parser size equals: 3. |
265 self assert: parser fail: 'Abc'. |
273 self assert: parser fail: 'Abc'. |
266 self assert: parser fail: 'ABc'. |
274 self assert: parser fail: 'ABc'. |
267 self assert: parser fail: 'ABC'. |
275 self assert: parser fail: 'ABC'. |
268 self assert: parser parse: 'abc'. |
276 self assert: parser parse: 'abc'. |
269 self assert: parser parse: 'aBC'. |
277 self assert: parser parse: 'aBC'. |