tests/PPPredicateTest.st
changeset 405 0470a5e6e712
parent 403 7063d523b064
child 410 779556be95f8
equal deleted inserted replaced
404:8da796db7f95 405:0470a5e6e712
    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