compiler/tests/PPCNodeFirstFollowNextTests.st
changeset 464 f6d77fee9811
parent 452 9f4558b3be66
child 523 09afcf28ed60
equal deleted inserted replaced
459:4751c407bb40 464:f6d77fee9811
     7 	classVariableNames:''
     7 	classVariableNames:''
     8 	poolDictionaries:''
     8 	poolDictionaries:''
     9 	category:'PetitCompiler-Tests-Nodes'
     9 	category:'PetitCompiler-Tests-Nodes'
    10 !
    10 !
    11 
    11 
       
    12 PPCNodeFirstFollowNextTests class instanceVariableNames:'first'
       
    13 
       
    14 "
       
    15  The following class instance variables are inherited by this class:
       
    16 
       
    17 	TestCase - lastOutcomes
       
    18 	TestAsserter - 
       
    19 	Object - 
       
    20 "
       
    21 !
       
    22 
    12 !PPCNodeFirstFollowNextTests methodsFor:'setup'!
    23 !PPCNodeFirstFollowNextTests methodsFor:'setup'!
    13 
    24 
    14 setUp
    25 setUp
    15     configuration := PPCConfiguration default.
    26     configuration := PPCConfiguration default.
    16     configuration arguments generate: false.
    27     configuration arguments generate: false.
    17     "The First/Follow is not allowed after this phase:"
       
    18     configuration arguments specialize: false.
       
    19 ! !
    28 ! !
    20 
    29 
    21 !PPCNodeFirstFollowNextTests methodsFor:'support'!
    30 !PPCNodeFirstFollowNextTests methodsFor:'support'!
    22 
    31 
    23 assert: set anyMatchesType: whatever
    32 assert: set anyMatchesType: whatever
   334     tree := self treeFrom: #space asParser star.
   343     tree := self treeFrom: #space asParser star.
   335     
   344     
   336     first := self first: tree.
   345     first := self first: tree.
   337     
   346     
   338     self assert: first size: 2.
   347     self assert: first size: 2.
   339     self assert: first anyMatchesType: PPCPredicateNode.
   348     self assert: first anyMatchesType: PPCMessagePredicateNode.
   340     self assert: first anyMatchesType: PPCSentinelNode.
   349     self assert: first anyMatchesType: PPCSentinelNode.
   341 !
   350 !
   342 
   351 
   343 testFirstStarMessagePredicate2
   352 testFirstStarMessagePredicate2
   344     configuration arguments specialize: true.
   353     configuration arguments specialize: true.
   345     tree := self treeFrom: #space asParser star.
   354     tree := self treeFrom: #space asParser star.
   346     
   355     
   347     self should: [ self first: tree ] raise: Exception.
   356     first := self first: tree.
       
   357     
       
   358     self assert: first size: 2.
       
   359     self assert: first anyMatchesType: PPCMessagePredicateNode.
       
   360     self assert: first anyMatchesType: PPCSentinelNode.
   348     
   361     
   349     
   362     
   350 !
   363 !
   351 
   364 
   352 testFirstTerminal
   365 testFirstTerminal
   415     
   428     
   416     first := tree firstSetWithProductions.
   429     first := tree firstSetWithProductions.
   417     
   430     
   418     self assert: first size = 1.
   431     self assert: first size = 1.
   419     self assert: first anyOne name = 'foo'.
   432     self assert: first anyOne name = 'foo'.
       
   433 ! !
       
   434 
       
   435 !PPCNodeFirstFollowNextTests methodsFor:'testing - first tokens'!
       
   436 
       
   437 testFirstTokenStar
       
   438     | token  |
       
   439     token := '.' asParser token.
       
   440     
       
   441     tree := self treeFrom: token star.
       
   442     
       
   443     first := tree firstSetWithTokens.
       
   444     self assert: first size = 2.
       
   445     self assert: first anySatisfy: [ :e | e isTokenNode ].
       
   446     self assert: first anySatisfy: [ :e | e = PPCSentinelNode instance ].
   420 ! !
   447 ! !
   421 
   448 
   422 !PPCNodeFirstFollowNextTests methodsFor:'testing - follow'!
   449 !PPCNodeFirstFollowNextTests methodsFor:'testing - follow'!
   423 
   450 
   424 testFollowSet1
   451 testFollowSet1