compiler/tests/extras/PPCSmalltalkGrammarVerificationTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 30 Jul 2015 08:37:37 +0100
changeset 510 869853decf31
parent 454 compiler/tests/extras/PPCSmalltalkVerificationTest.st@a9cd5ea7cc36
child 516 3b81c9e53352
permissions -rw-r--r--
Tests refactoring - use generated test cases to make sure all posibilities are tested. Do not generate resource for all combinations, use PPCSetUpBeforeTearDownAfterResource instead that delegates parser compilation to the testcase itself (it calls it's #setUpBefore method).

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

"{ NameSpace: Smalltalk }"

PPCAbstractParserTest subclass:#PPCSmalltalkGrammarVerificationTest
	instanceVariableNames:'parser result context resource fileResources'
	classVariableNames:''
	poolDictionaries:''
	category:'PetitCompiler-Extras-Tests-Smalltalk'
!


!PPCSmalltalkGrammarVerificationTest class methodsFor:'as yet unclassified'!

resources
    ^ (OrderedCollection with: PPCResources)
        addAll: super resources;
        yourself
! !

!PPCSmalltalkGrammarVerificationTest class methodsFor:'queries'!

isAbstract
    "Return if this class is an abstract class.
     True is returned here for myself only; false for subclasses.
     Abstract subclasses must redefine again."

    ^ self == PPCSmalltalkGrammarVerificationTest.
! !

!PPCSmalltalkGrammarVerificationTest methodsFor:'accessing'!

petitParserClass
    "Return the name of the petit parser to compile"

    ^ PPSmalltalkGrammar

    "Created: / 29-07-2015 / 19:52:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!PPCSmalltalkGrammarVerificationTest methodsFor:'setup'!

setUp
    super setUp.
    fileResources := (self resources detect: [:e | e = PPCResources ]) current.
!

tearDown
    super tearDown.
    "
    self compiledSmalltalkGrammarClass isNil ifFalse:[ 
        self compiledSmalltalkGrammarClass removeFromSystem
    ].
    "
! !

!PPCSmalltalkGrammarVerificationTest methodsFor:'tests'!

testSmalltalk
    | compiledParser normalParser expected actual |
    normalParser := self petitParser.
    compiledParser := self compiledParser.
    
    fileResources smalltalkSourcesBig do: [ :source |
        expected := normalParser parse: source.
        expected isPetitFailure ifFalse: [ 
     		actual := (compiledParser parse: source withContext: self context). 
            self assert: expected equals: actual.
        ]
    ].
!

testSmalltalkClass
    | compiledParser normalParser |
    normalParser := self petitParser.
    compiledParser := self compiledParser.
    
    fileResources smalltalkClassMethods do: [ :source |
        self assert: (normalParser parse: source) 
              equals: (compiledParser parse: source withContext: self context). 
    ].
!

testSmalltalkObject
    | compiledParser normalParser |
    normalParser := self petitParser.
    compiledParser := self compiledParser.
    
    fileResources smalltalkObjectMethods do: [ :source |
        self assert: (normalParser parse: source) 
              equals: (compiledParser parse: source withContext: self context). 
    ].
! !

!PPCSmalltalkGrammarVerificationTest class methodsFor:'documentation'!

version
    ^ 'Path: stx/goodies/petitparser/compiler/tests/extras/PPCSmalltalkVerificationTest.st, Version: 1.0, User: jv, Time: 2015-07-30T08:07:11.283+01'
!

version_HG
    ^ 'Path: stx/goodies/petitparser/compiler/tests/extras/PPCSmalltalkVerificationTest.st, Version: 1.0, User: jv, Time: 2015-07-30T08:07:11.283+01'
! !