compiler/tests/extras/PPCSmalltalkGrammarVerificationTest.st
changeset 515 b5316ef15274
child 516 3b81c9e53352
equal deleted inserted replaced
502:1e45d3c96ec5 515:b5316ef15274
       
     1 "{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
       
     2 
       
     3 "{ NameSpace: Smalltalk }"
       
     4 
       
     5 PPCAbstractParserTest subclass:#PPCSmalltalkGrammarVerificationTest
       
     6 	instanceVariableNames:'parser result context resource fileResources'
       
     7 	classVariableNames:''
       
     8 	poolDictionaries:''
       
     9 	category:'PetitCompiler-Extras-Tests-Smalltalk'
       
    10 !
       
    11 
       
    12 !PPCSmalltalkGrammarVerificationTest class methodsFor:'as yet unclassified'!
       
    13 
       
    14 resources
       
    15     ^ (OrderedCollection with: PPCResources)
       
    16         addAll: super resources;
       
    17         yourself
       
    18 ! !
       
    19 
       
    20 !PPCSmalltalkGrammarVerificationTest class methodsFor:'queries'!
       
    21 
       
    22 isAbstract
       
    23     "Return if this class is an abstract class.
       
    24      True is returned here for myself only; false for subclasses.
       
    25      Abstract subclasses must redefine again."
       
    26 
       
    27     ^ self == PPCSmalltalkGrammarVerificationTest.
       
    28 ! !
       
    29 
       
    30 !PPCSmalltalkGrammarVerificationTest methodsFor:'accessing'!
       
    31 
       
    32 petitParserClass
       
    33     "Return the name of the petit parser to compile"
       
    34 
       
    35     ^ PPSmalltalkGrammar
       
    36 
       
    37     "Created: / 29-07-2015 / 19:52:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
    38 ! !
       
    39 
       
    40 !PPCSmalltalkGrammarVerificationTest methodsFor:'setup'!
       
    41 
       
    42 setUp
       
    43     super setUp.
       
    44     fileResources := (self resources detect: [:e | e = PPCResources ]) current.
       
    45 !
       
    46 
       
    47 tearDown
       
    48     super tearDown.
       
    49     "
       
    50     self compiledSmalltalkGrammarClass isNil ifFalse:[ 
       
    51         self compiledSmalltalkGrammarClass removeFromSystem
       
    52     ].
       
    53     "
       
    54 ! !
       
    55 
       
    56 !PPCSmalltalkGrammarVerificationTest methodsFor:'tests'!
       
    57 
       
    58 testSmalltalk
       
    59     | compiledParser normalParser expected actual |
       
    60     normalParser := self petitParser.
       
    61     compiledParser := self compiledParser.
       
    62     
       
    63     fileResources smalltalkSourcesBig do: [ :source |
       
    64         expected := normalParser parse: source.
       
    65         expected isPetitFailure ifFalse: [ 
       
    66      				actual := (compiledParser parse: source withContext: self context). 
       
    67             self assert: expected equals: actual.
       
    68         ]
       
    69     ].
       
    70 !
       
    71 
       
    72 testSmalltalkClass
       
    73     | compiledParser normalParser |
       
    74     normalParser := self petitParser.
       
    75     compiledParser := self compiledParser.
       
    76     
       
    77     fileResources smalltalkClassMethods do: [ :source |
       
    78         self assert: (normalParser parse: source) 
       
    79               equals: (compiledParser parse: source withContext: self context). 
       
    80     ].
       
    81 !
       
    82 
       
    83 testSmalltalkObject
       
    84     | compiledParser normalParser |
       
    85     normalParser := self petitParser.
       
    86     compiledParser := self compiledParser.
       
    87     
       
    88     fileResources smalltalkObjectMethods do: [ :source |
       
    89         self assert: (normalParser parse: source) 
       
    90               equals: (compiledParser parse: source withContext: self context). 
       
    91     ].
       
    92 ! !
       
    93