compiler/tests/PPCLTokenizingOptimizationTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 17 Aug 2015 12:13:16 +0100
changeset 515 b5316ef15274
parent 464 f6d77fee9811
child 524 f6f68d32de73
permissions -rw-r--r--
Updated to PetitCompiler-JanKurs.160, PetitCompiler-Tests-JanKurs.112, PetitCompiler-Extras-Tests-JanKurs.25, PetitCompiler-Benchmarks-JanKurs.17 Name: PetitCompiler-JanKurs.160 Author: JanKurs Time: 17-08-2015, 09:52:26.291 AM UUID: 3b4bfc98-8098-4951-af83-a59e2585b121 Name: PetitCompiler-Tests-JanKurs.112 Author: JanKurs Time: 16-08-2015, 05:00:32.936 PM UUID: 85613d47-08f3-406f-9823-9cdab451e805 Name: PetitCompiler-Extras-Tests-JanKurs.25 Author: JanKurs Time: 16-08-2015, 05:00:10.328 PM UUID: 09731810-51a1-4151-8d3a-56b636fbd1f7 Name: PetitCompiler-Benchmarks-JanKurs.17 Author: JanKurs Time: 05-08-2015, 05:29:32.407 PM UUID: e544b5f1-bcf8-470b-93a6-d2363e4dfc8a

"{ Package: 'stx:goodies/petitparser/compiler/tests' }"

"{ NameSpace: Smalltalk }"

TestCase subclass:#PPCLTokenizingOptimizationTest
	instanceVariableNames:'configuration parser result'
	classVariableNames:''
	poolDictionaries:''
	category:'PetitCompiler-Tests-Core-Tokenizing'
!


!PPCLTokenizingOptimizationTest methodsFor:'as yet unclassified'!

assert: object type: class
    self assert: (object isKindOf: class)
!

configuration
    configuration := PPCTokenizingConfiguration new.
    configuration arguments generate: false.
    ^ configuration
!

optimize: aPPParser
    ^ self configuration compile: aPPParser.
!

testCompileToken
    parser := 'foo' asParser token.
    result := self optimize: parser.
    
    self assert: result type: PPCTokenizingParserNode.
    self assert: result parser type: PPCTokenConsumeNode.
    self assert: result parser child type: PPCTokenNode.
    self assert: result parser child child literal = 'foo'.
!

testCompileTrim
    parser := 'foo' asParser token trim.
    result := self optimize: parser.
    
    self assert: result type: PPCTokenizingParserNode.
    self assert: result parser type: PPCTokenConsumeNode.
    self assert: result parser child type: PPCTrimmingTokenNode.
    self assert: result whitespace type: PPCTokenStarSeparatorNode.
!

testCompileTrimmingToken
    parser := 'foo' asParser trimmingToken.
    result := self optimize: parser.
    
    self assert: result type: PPCTokenizingParserNode.
    self assert: result parser type: PPCTokenConsumeNode.
    self assert: result parser child type: PPCTrimmingTokenNode.
    self assert: result whitespace type: PPCTokenStarSeparatorNode.
    
    self assert: result tokens children size = 1.
    self assert: (result tokens children anySatisfy: [ :e | e isKindOf: PPCTrimmingTokenNode ])
!

testCompileTrimmingToken2
    | token |
    token := 'foo' asParser trimmingToken.
    parser := token wrapped
        name: 'fooToken';
        yourself.
    result := self optimize: parser.
    
    self assert: result type: PPCTokenizingParserNode.
    self assert: result parser type: PPCTokenConsumeNode.
    self assert: result parser name = 'fooToken'.
    self assert: result parser child name = 'fooToken'.
    
    self assert: result tokens children size = 1.
    self assert: (result tokens children anySatisfy: [ :e | e isKindOf: PPCTrimmingTokenNode ]).
    self assert: (result tokens children anySatisfy: [ :e | e name = 'fooToken']).
! !

!PPCLTokenizingOptimizationTest class methodsFor:'documentation'!

version_HG

    ^ '$Changeset: <not expanded> $'
! !