tests/PPConditionalParserTests.st
changeset 427 a7f5e6de19d2
child 459 4751c407bb40
equal deleted inserted replaced
426:2a65c972b937 427:a7f5e6de19d2
       
     1 "{ Package: 'stx:goodies/petitparser/tests' }"
       
     2 
       
     3 "{ NameSpace: Smalltalk }"
       
     4 
       
     5 PPAbstractParserTest subclass:#PPConditionalParserTests
       
     6 	instanceVariableNames:'context'
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'PetitTests-Tests'
       
    10 !
       
    11 
       
    12 !PPConditionalParserTests methodsFor:'as yet unclassified'!
       
    13 
       
    14 context
       
    15 	^ context
       
    16 !
       
    17 
       
    18 setUp
       
    19 	super setUp.
       
    20 	context := PPContext new
       
    21 !
       
    22 
       
    23 testConditionCtxAccess
       
    24 	| parser |
       
    25 
       
    26 	parser := ('a' asParser if: [ :ctx | (ctx propertyAt: #foo) = #bar ]).
       
    27 	
       
    28 	context propertyAt: #foo put: #bar.
       
    29 	self assert: parser parse: 'a' .
       
    30 
       
    31 
       
    32 	context propertyAt: #foo put: #zorg.
       
    33 	self assert: parser fail: 'a' .
       
    34 !
       
    35 
       
    36 testConditionFalse
       
    37 	| parser |
       
    38 	parser := ('a' asParser if: [ :ctx | false ]).
       
    39 	
       
    40 	self assert: parser fail: 'a'.
       
    41 	self assert: parser fail: 'b'.
       
    42 !
       
    43 
       
    44 testConditionTrue
       
    45 	| parser |
       
    46 	parser := ('a' asParser if: [ :ctx | true ]).
       
    47 	
       
    48 	self assert: parser parse: 'a'.
       
    49 	self assert: parser fail: 'b'.
       
    50 ! !
       
    51