--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/compiler/tests/PPCClassBuilderTest.st Fri Jul 24 15:06:54 2015 +0100
@@ -0,0 +1,110 @@
+"{ Package: 'stx:goodies/petitparser/compiler/tests' }"
+
+"{ NameSpace: Smalltalk }"
+
+TestCase subclass:#PPCClassBuilderTest
+ instanceVariableNames:'builder method1 result'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'PetitCompiler-Tests-Core'
+!
+
+!PPCClassBuilderTest methodsFor:'as yet unclassified'!
+
+foo
+ ^ PPCMethod new
+ id: #foo;
+ code: '^ 1';
+ yourself
+!
+
+setUp
+ super setUp.
+ builder := PPCClassBuilder new.
+!
+
+tearDown
+ super tearDown.
+ result removeFromSystem.
+!
+
+testCompileClass
+ builder compiledClassName: #PPCGenerated.
+ builder compiledSuperclass: Object.
+
+ method1 := self foo.
+ builder methodDictionary at: #foo put: method1.
+
+ builder instvars add: #foo.
+
+ builder constants at: #foobar put: #foobar.
+ builder constants at: #barbar put: #barbar.
+
+ result := builder compileClass.
+
+ self assert: result isNil not.
+ self assert: result name = #PPCGenerated.
+ self assert: result superclass = Object.
+
+ self assert: result methodDictionary size =1.
+ self assert: result instanceVariables size = 1.
+ self assert: result classVariables size = 2.
+ self assert: (result classVariableNamed: #foobar) value = #foobar.
+ self assert: (result classVariableNamed: #barbar) value = #barbar.
+
+ self assert: result new foo = 1.
+!
+
+testCompileClass2
+ Object subclass: #PPCGenerated
+ instanceVariableNames: ''
+ classVariableNames: 'foobar'
+ category: 'PetitCompiler-generated'.
+
+ (Smalltalk at: #PPCGenerated) compileSilently: 'bar ^ 12' classified: 'test'.
+ (Smalltalk at: #PPCGenerated) compileSilently: 'foo ^ 123' classified: 'generated'.
+ (Smalltalk at: #PPCGenerated) compileSilently: 'foo2 ^ 1234' classified: 'generated'.
+
+ builder compiledClassName: #PPCGenerated.
+ builder compiledSuperclass: Object.
+
+ method1 := self foo.
+ builder methodDictionary at: #foo put: method1.
+
+ result := builder compileClass.
+
+ self assert: result isNil not.
+ self assert: result name = #PPCGenerated.
+ self assert: result superclass = Object.
+ self assert: result methodDictionary size = 2.
+
+ self assert: result classVariables size = 0.
+
+ self assert: result new foo = 1.
+ self assert: result new bar = 12.
+!
+
+testCompileClass3
+ Object subclass: #PPCGenerated
+ instanceVariableNames: ''
+ classVariableNames: 'foobar'
+ category: 'PetitCompiler-generated'.
+
+ (Smalltalk at: #PPCGenerated) compileSilently: 'foo ^ 123' classified: 'testing'.
+
+ builder compiledClassName: #PPCGenerated.
+ builder compiledSuperclass: Object.
+
+ method1 := self foo.
+ builder methodDictionary at: #foo put: method1.
+
+ result := builder compileClass.
+
+ self assert: result isNil not.
+ self assert: result name = #PPCGenerated.
+ self assert: result superclass = Object.
+ self assert: result methodDictionary size = 1.
+
+ self assert: result new foo = 123.
+! !
+