compiler/tests/extras/PPCExpressionsVerificationTest.st
changeset 459 4751c407bb40
child 464 f6d77fee9811
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/extras/PPCExpressionsVerificationTest.st	Tue May 12 01:24:03 2015 +0100
@@ -0,0 +1,81 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests/extras' }"
+
+"{ NameSpace: Smalltalk }"
+
+PPAbstractParserTest subclass:#PPCExpressionsVerificationTest
+	instanceVariableNames:'parser result context resource fileResources'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'PetitCompiler-Extras-Tests-Expressions'
+!
+
+!PPCExpressionsVerificationTest class methodsFor:'as yet unclassified'!
+
+isAbstract
+    ^ self name = #PPCExpressionsVerificationTest
+!
+
+resources
+    ^ (OrderedCollection with: PPCResources)
+        addAll: super resources;
+        yourself
+! !
+
+!PPCExpressionsVerificationTest methodsFor:'accessing'!
+
+compiledGrammar
+    ^ self compiledGrammarClass new
+!
+
+compiledGrammarClass
+    self subclassResponsibility 
+!
+
+grammar
+    ^ PPExpressionGrammar new
+! !
+
+!PPCExpressionsVerificationTest methodsFor:'setup'!
+
+setUp
+    super setUp.
+    fileResources := (self resources detect: [:e | e = PPCResources ]) current.
+!
+
+tearDown
+    super tearDown.
+    "
+    self compiledSmalltalkGrammarClass isNil ifFalse:[ 
+        self compiledSmalltalkGrammarClass removeFromSystem
+    ].
+    "
+! !
+
+!PPCExpressionsVerificationTest methodsFor:'tests'!
+
+testExpressions
+    | compiledParser normalParser expected actual |
+    normalParser := self grammar.
+    compiledParser := self compiledGrammar.
+    
+    fileResources expressionSourcesBig do: [ :source |
+        expected := normalParser parse: source.
+        expected isPetitFailure ifFalse: [ 
+     		actual := (compiledParser parse: source withContext: self context). 
+            self assert: expected equals: actual.
+        ]
+    ].
+!
+
+testSanity
+    | compiledParser normalParser source |
+    normalParser := self grammar.
+    compiledParser := self compiledGrammar.
+    
+    source := fileResources expressionOfSize: 100. 
+    result := normalParser parse: source.
+    
+    self assert: ((result deepFlatten select: [ :e | e isNumber ]) size) = 100.
+    self assert: ((result deepFlatten select: [ :e | e isNumber ]) size) = 100.
+! !
+