compiler/tests/PPCLTokenizingOptimizationTest.st
changeset 464 f6d77fee9811
child 515 b5316ef15274
equal deleted inserted replaced
459:4751c407bb40 464:f6d77fee9811
       
     1 "{ Package: 'stx:goodies/petitparser/compiler/tests' }"
       
     2 
       
     3 "{ NameSpace: Smalltalk }"
       
     4 
       
     5 TestCase subclass:#PPCLTokenizingOptimizationTest
       
     6 	instanceVariableNames:'configuration parser result'
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'PetitCompiler-Tests-Core-Tokenizing'
       
    10 !
       
    11 
       
    12 
       
    13 !PPCLTokenizingOptimizationTest methodsFor:'as yet unclassified'!
       
    14 
       
    15 assert: object type: class
       
    16     self assert: (object isKindOf: class)
       
    17 !
       
    18 
       
    19 configuration
       
    20     configuration := PPCTokenizingConfiguration new.
       
    21     configuration arguments generate: false.
       
    22     ^ configuration
       
    23 !
       
    24 
       
    25 optimize: aPPParser
       
    26     ^ self configuration compile: aPPParser.
       
    27 !
       
    28 
       
    29 testCompileToken
       
    30     parser := 'foo' asParser token.
       
    31     result := self optimize: parser.
       
    32     
       
    33     self assert: result type: PPCTokenizingParserNode.
       
    34     self assert: result parser type: PPCTokenConsumeNode.
       
    35     self assert: result parser child type: PPCTokenNode.
       
    36     self assert: result parser child child literal = 'foo'.
       
    37 !
       
    38 
       
    39 testCompileTrim
       
    40     parser := 'foo' asParser token trim.
       
    41     result := self optimize: parser.
       
    42     
       
    43     self assert: result type: PPCTokenizingParserNode.
       
    44     self assert: result parser type: PPCTokenConsumeNode.
       
    45     self assert: result parser child type: PPCTrimmingTokenNode.
       
    46     self assert: result parser child whitespace type: PPCTokenStarSeparatorNode.
       
    47 !
       
    48 
       
    49 testCompileTrimmingToken
       
    50     parser := 'foo' asParser trimmingToken.
       
    51     result := self optimize: parser.
       
    52     
       
    53     self assert: result type: PPCTokenizingParserNode.
       
    54     self assert: result parser type: PPCTokenConsumeNode.
       
    55     self assert: result parser child type: PPCTrimmingTokenNode.
       
    56     self assert: result parser child whitespace type: PPCTokenStarSeparatorNode.
       
    57     
       
    58     self assert: result tokenizer children size = 2.
       
    59     self assert: (result tokenizer children anySatisfy: [ :e | e isKindOf: PPCTrimmingTokenNode ])
       
    60 !
       
    61 
       
    62 testCompileTrimmingToken2
       
    63     | token |
       
    64     token := 'foo' asParser trimmingToken.
       
    65     parser := token wrapped
       
    66         name: 'fooToken';
       
    67         yourself.
       
    68     result := self optimize: parser.
       
    69     
       
    70     self assert: result type: PPCTokenizingParserNode.
       
    71     self assert: result parser type: PPCTokenConsumeNode.
       
    72     self assert: result parser name = 'fooToken'.
       
    73     self assert: result parser child name = 'token_fooToken'.
       
    74     
       
    75     self assert: result tokenizer children size = 2.
       
    76     self assert: (result tokenizer children anySatisfy: [ :e | e isKindOf: PPCTrimmingTokenNode ]).
       
    77     self assert: (result tokenizer children anySatisfy: [ :e | e name = 'token_fooToken']).
       
    78 ! !
       
    79 
       
    80 !PPCLTokenizingOptimizationTest class methodsFor:'documentation'!
       
    81 
       
    82 version_HG
       
    83 
       
    84     ^ '$Changeset: <not expanded> $'
       
    85 ! !
       
    86