PPPredicateTest.st
changeset 44 16f1a2fdc0d7
parent 4 90de244a7fa2
child 94 cc0b23aea2e9
equal deleted inserted replaced
43:4bc103d5f559 44:16f1a2fdc0d7
     9 
     9 
    10 
    10 
    11 !PPPredicateTest methodsFor:'private'!
    11 !PPPredicateTest methodsFor:'private'!
    12 
    12 
    13 charactersDo: aBlock
    13 charactersDo: aBlock
    14 	"The limits are 1-255 as far as I know"
    14         "The limits are 1-255 as far as I know"
    15 	self breakPoint: #petitparser.
    15         self breakPoint: #petitparser.
    16 	1 to: 255 do: [ :index | aBlock value: (Character codePoint: index) ]
    16         1 to: 255 do: [ :index | aBlock value: (Character codePoint: index) ]
    17 "/        1 to: 256 do: [ :index | aBlock value: (Character codePoint: index) ]
    17 "/        1 to: 256 do: [ :index | aBlock value: (Character codePoint: index) ]
    18 
    18 
    19     "Modified: / 19-12-2010 / 16:58:58 / Jan Kurs <kurs.jan@post.cz>"
    19     "Modified: / 19-12-2010 / 16:58:58 / Jan Kurs <kurs.jan@post.cz>"
    20 ! !
    20 ! !
    21 
    21 
    25 	| block parser |
    25 	| block parser |
    26 	block := [ :char | char = $* ].
    26 	block := [ :char | char = $* ].
    27 	parser := PPPredicateObjectParser on: block message: 'starlet'.
    27 	parser := PPPredicateObjectParser on: block message: 'starlet'.
    28 	self assert: parser block = block.
    28 	self assert: parser block = block.
    29 	self assert: parser message = 'starlet'.
    29 	self assert: parser message = 'starlet'.
    30 
    30 	
    31 	self assertCharacterSets: parser.
    31 	self assertCharacterSets: parser.
    32 	self assert: parser parse: '*' to: $*.
    32 	self assert: parser parse: '*' to: $*.
    33 	self assert: parser parse: '**' to: $* end: 1.
    33 	self assert: parser parse: '**' to: $* end: 1.
    34 	self assert: parser fail: ''.
    34 	self assert: parser fail: ''.
    35 	self assert: parser fail: '1'.
    35 	self assert: parser fail: '1'.
   234 
   234 
   235 !PPPredicateTest methodsFor:'testing-sequence'!
   235 !PPPredicateTest methodsFor:'testing-sequence'!
   236 
   236 
   237 testSequenceParser
   237 testSequenceParser
   238 	| parser |
   238 	| parser |
   239 	parser := PPPredicateSequenceParser
   239 	parser := PPPredicateSequenceParser 
   240 		on: [ :value | value first isUppercase ]
   240 		on: [ :value | value first isUppercase ] 
   241 		message: 'uppercase 3 letter words'
   241 		message: 'uppercase 3 letter words'
   242 		size: 3.
   242 		size: 3.
   243 	self assert: parser size = 3.
   243 	self assert: parser size = 3.
   244 	self assert: parser parse: 'Abc'.
   244 	self assert: parser parse: 'Abc'.
   245 	self assert: parser parse: 'ABc'.
   245 	self assert: parser parse: 'ABc'.
   246 	self assert: parser parse: 'ABC'.
   246 	self assert: parser parse: 'ABC'.
   247 	self assert: parser fail: 'abc'.
   247 	self assert: parser fail: 'abc'.
   248 	self assert: parser fail: 'aBC'.
   248 	self assert: parser fail: 'aBC'.
   249 	self assert: parser fail: 'Ab'.
   249 	self assert: parser fail: 'Ab'.
   250 
   250 	
   251 	parser := parser negate.
   251 	parser := parser negate.
   252 	self assert: parser size = 3.
   252 	self assert: parser size = 3.
   253 	self assert: parser fail: 'Abc'.
   253 	self assert: parser fail: 'Abc'.
   254 	self assert: parser fail: 'ABc'.
   254 	self assert: parser fail: 'ABc'.
   255 	self assert: parser fail: 'ABC'.
   255 	self assert: parser fail: 'ABC'.
   264 	"Assert the character set of aParser does not overlap with the character set with the negated parser, and that they both cover the complete character space."
   264 	"Assert the character set of aParser does not overlap with the character set with the negated parser, and that they both cover the complete character space."
   265 
   265 
   266 	| positives negatives |
   266 	| positives negatives |
   267 	positives := self parsedCharacterSet: aParser.
   267 	positives := self parsedCharacterSet: aParser.
   268 	negatives := self parsedCharacterSet: aParser negate.
   268 	negatives := self parsedCharacterSet: aParser negate.
   269 	self charactersDo: [ :char |
   269 	self charactersDo: [ :char | 
   270 		| positive negative |
   270 		| positive negative |
   271 		positive := positives includes: char.
   271 		positive := positives includes: char.
   272 		negative := negatives includes: char.
   272 		negative := negatives includes: char.
   273 		self
   273 		self 
   274 			assert: ((positive and: [ negative not ])
   274 			assert: ((positive and: [ negative not ])
   275 				or: [ positive not and: [ negative ] ])
   275 				or: [ positive not and: [ negative ] ])
   276 			description: char printString , ' should be in exactly one set' ]
   276 			description: char printString , ' should be in exactly one set' ]
   277 !
   277 !
   278 
   278 
   285 	^ result contents
   285 	^ result contents
   286 ! !
   286 ! !
   287 
   287 
   288 !PPPredicateTest class methodsFor:'documentation'!
   288 !PPPredicateTest class methodsFor:'documentation'!
   289 
   289 
       
   290 version
       
   291     ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPPredicateTest.st,v 1.3 2012-05-04 22:08:04 vrany Exp $'
       
   292 !
       
   293 
       
   294 version_CVS
       
   295     ^ '$Header: /cvs/stx/stx/goodies/petitparser/PPPredicateTest.st,v 1.3 2012-05-04 22:08:04 vrany Exp $'
       
   296 !
       
   297 
   290 version_SVN
   298 version_SVN
   291     ^ '$Id: PPPredicateTest.st,v 1.2 2012-01-13 11:22:50 cg Exp $'
   299     ^ '§Id: PPPredicateTest.st 5 2010-12-19 17:38:27Z kursjan §'
   292 ! !
   300 ! !