compiler/tests/PPCVerificationTest.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 01 May 2015 14:39:47 +0200
changeset 445 eb33780df2f9
parent 438 20598d7ce9fa
child 451 989570319d14
permissions -rw-r--r--
Portability: Inlined #asLegalSelector since Smalltalk/X does not support it

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

"{ NameSpace: Smalltalk }"

PPAbstractParserTest subclass:#PPCVerificationTest
	instanceVariableNames:'parser result context resource'
	classVariableNames:''
	poolDictionaries:''
	category:'PetitCompiler-Tests-Core'
!

!PPCVerificationTest class methodsFor:'as yet unclassified'!

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

!PPCVerificationTest methodsFor:'tests - verification Java'!

compiledJavaSyntax
	^ (Smalltalk at: #PPCompiledJavaSyntax) new
!

compiledSmalltalkGrammar
	^ (Smalltalk at: #PPCompiledSmalltalkGrammar) new
!

context	
	^ context := PPCProfilingContext new
!

javaSyntax
	^ PPJavaSyntax new
!

setUp
	super setUp.
!

smalltalkGrammar
	^ PPSmalltalkGrammar new
!

testJava
	| compiledParser normalParser |
	normalParser := self javaSyntax.
	compiledParser := self compiledJavaSyntax.
	
	PPCBenchmarkResources new javaSourcesBig do: [ :source |
		result := normalParser parse: source.
		result isPetitFailure not ifTrue: [ 
			self assert: (compiledParser parse: source withContext: self context)
				  equals: result
		]
	].
!

testJavaTimer
	| compiledParser normalParser source |
	normalParser := self javaSyntax.
	
	source := FileStream fileNamed: '../java-src/java/util/Timer.java'.
	result := normalParser parse: source.
	
	result isPetitFailure not ifTrue: [ 
		compiledParser := self compiledJavaSyntax.
		self assert: (compiledParser parse: source withContext: self context)
			  equals: result
	]
! !

!PPCVerificationTest methodsFor:'tests - verification Smalltalk'!

testSmalltalk
	| compiledParser normalParser expected actual |
	normalParser := self smalltalkGrammar.
	compiledParser := self compiledSmalltalkGrammar.
	
	PPCBenchmarkResources new 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 source |
	normalParser := self smalltalkGrammar.
	compiledParser := self compiledSmalltalkGrammar.
	
	Class methods do: [ :m |
		source := m sourceCode.
		self assert: (normalParser parse: source) 
			  equals: (compiledParser parse: source withContext: self context). 
	].
!

testSmalltalkObject
	| compiledParser normalParser source |
	normalParser := self smalltalkGrammar.
	compiledParser := self compiledSmalltalkGrammar.
	
	Object methods do: [ :m |
		source := m sourceCode.
		self assert: (normalParser parse: source) 
			  equals: (compiledParser parse: source withContext: self context). 
	].
! !