57 self assert: parser fail: '1'. |
57 self assert: parser fail: '1'. |
58 self assert: parser fail: 'a' |
58 self assert: parser fail: 'a' |
59 ! |
59 ! |
60 |
60 |
61 testCr |
61 testCr |
62 | parser | |
62 | parser | |
63 parser := #cr asParser. |
63 parser := #cr asParser. |
64 self assertCharacterSets: parser. |
64 self assertCharacterSets: parser. |
65 self assert: parser parse: (String with: (Character codePoint: 13)) to: (Character codePoint: 13) |
65 self assert: parser parse: (String with: (Character codePoint: 13)) to: (Character codePoint: 13) |
66 |
|
67 "Modified: / 04-10-2014 / 12:03:43 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
68 ! |
66 ! |
69 |
67 |
70 testDigit |
68 testDigit |
71 | parser | |
69 | parser | |
72 parser := #digit asParser. |
70 parser := #digit asParser. |
73 self assertCharacterSets: parser. |
71 self assertCharacterSets: parser. |
74 self assert: parser parse: '0' to: $0. |
72 self assert: parser parse: '0' to: $0. |
75 self assert: parser parse: '9' to: $9. |
73 self assert: parser parse: '9' to: $9. |
76 self assert: parser fail: ''. |
74 self assert: parser fail: ''. |
77 self assert: parser fail: 'a' |
75 self assert: parser fail: 'a' |
|
76 ! |
|
77 |
|
78 testEndOfLine |
|
79 | parser | |
|
80 parser := (#letter asParser / #blank asParser) star, #endOfLine asParser. |
|
81 |
|
82 self assert: parser parse: 'lorem ipsum'. |
|
83 |
|
84 parser := #any asParser, #endOfLine asParser, #any asParser star. |
|
85 self assert: parser parse: 'a', String cr, 'b'. |
|
86 self assert: parser fail: String crlf. |
|
87 self assert: parser fail: 'lorem ipsum'. |
|
88 |
|
89 parser := #endOfLine asParser, #any asParser, #endOfLine asParser negate star, #endOfLine asParser. |
|
90 self assert: parser parse: String cr, 'lorem ipsum'. |
|
91 self assert: parser parse: String lf, 'lorem ipsum'. |
|
92 self assert: parser parse: String crlf, 'lorem ipsum'. |
|
93 |
|
94 self assert: parser parse: String crlf. |
|
95 self assert: parser parse: String cr. |
|
96 self assert: parser parse: String lf. |
|
97 |
|
98 parser := #endOfLine asParser negate star, #endOfLine asParser, #any asParser star. |
|
99 self assert: parser parse: String crlf, 'lorem ipsum'. |
|
100 self assert: parser parse: String crlf. |
78 ! |
101 ! |
79 |
102 |
80 testHex |
103 testHex |
81 | parser | |
104 | parser | |
82 parser := #hex asParser. |
105 parser := #hex asParser. |
297 or: [ positive not and: [ negative ] ]) |
320 or: [ positive not and: [ negative ] ]) |
298 description: char printString , ' should be in exactly one set' ] |
321 description: char printString , ' should be in exactly one set' ] |
299 ! |
322 ! |
300 |
323 |
301 parsedCharacterSet: aParser |
324 parsedCharacterSet: aParser |
302 | result | |
325 | result | |
303 |
326 result := String new writeStream. |
304 ((Smalltalk respondsTo: #isSmalltalkX) and:[ Smalltalk isSmalltalkX ]) ifTrue:[ |
327 self charactersDo: [ :char | |
305 result := String new writeStream |
328 (aParser matches: (String with: char)) |
306 ] ifFalse:[ |
329 ifTrue: [ result nextPut: char ] ]. |
307 result := WriteStream on: String new. |
330 ^ result contents |
308 ]. |
|
309 self charactersDo: [ :char | |
|
310 (aParser matches: (char asString)) |
|
311 ifTrue: [ result nextPut: char ] ]. |
|
312 ^ result contents |
|
313 |
|
314 "Modified: / 03-10-2014 / 03:01:30 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
315 ! ! |
331 ! ! |
316 |
332 |
317 !PPPredicateTest class methodsFor:'documentation'! |
333 !PPPredicateTest class methodsFor:'documentation'! |
318 |
334 |
319 version |
335 version |