--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/IRTransformTest.st Thu Oct 30 22:27:09 2014 +0000
@@ -0,0 +1,172 @@
+"{ Package: 'ctu:ircompiler/tests' }"
+
+TestCase subclass:#IRTransformTest
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'IR Compiler-Tests'
+!
+
+
+!IRTransformTest methodsFor:'testing'!
+
+testAdd
+ |iRMethod aCompiledMethod|
+
+ iRMethod := (IRBuilder new)
+ numRargs:1;
+ addTemps:#( #self );
+ pushLiteral:1;
+ returnTop;
+ ir.
+ (iRMethod allSequences last) last delete.
+ (iRMethod allSequences last) last delete.
+ (iRMethod allSequences last) add:(IRInstruction pushLiteral:2).
+ (iRMethod allSequences last) add:(IRInstruction returnTop).
+ aCompiledMethod := iRMethod compiledCode.
+ self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
+!
+
+testAddBefore
+ |iRMethod aCompiledMethod ret|
+
+ iRMethod := (IRBuilder new)
+ numRargs:1;
+ addTemps:#( #self );
+ pushLiteral:1;
+ returnTop;
+ ir.
+ (iRMethod allSequences last) last delete.
+ (iRMethod allSequences last) last delete.
+ ret := (IRInstruction returnTop).
+ (iRMethod allSequences last) add:ret.
+ (iRMethod allSequences last) add:(IRInstruction pushLiteral:2) before:ret.
+ aCompiledMethod := iRMethod compiledCode.
+ self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
+!
+
+testAddIntructions
+
+ | iRMethod aCompiledMethod |
+
+ iRMethod := IRBuilder new
+ numRargs: 1;
+ addTemps: #(self); "receiver and args declarations"
+ pushLiteral: 1;
+ returnTop;
+ ir.
+
+ (iRMethod allSequences last) last delete.
+ (iRMethod allSequences last) last delete.
+
+ (iRMethod allSequences last)
+ addInstructions: {(IRInstruction pushLiteral: 2). (IRInstruction returnTop)}.
+
+ aCompiledMethod := iRMethod compiledCode.
+ self should: [(aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2].
+
+ "Modified: / 30-03-2009 / 19:40:10 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+testAddIntructionsBefore
+
+ | iRMethod aCompiledMethod push |
+
+ iRMethod := IRBuilder new
+ numRargs: 1;
+ addTemps: #(self); "receiver and args declarations"
+ pushLiteral: 1;
+ returnTop;
+ ir.
+
+ push := (iRMethod allSequences last) at: (iRMethod allSequences size - 1) .
+
+ (iRMethod allSequences last)
+ addInstructions: {(IRInstruction pushLiteral: 2). (IRInstruction returnTop)} before: push.
+
+ aCompiledMethod := iRMethod compiledCode.
+ self should: [(aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2].
+
+ "Modified: / 30-03-2009 / 19:40:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+testAddIntructionsBeforeFromLList
+ |iRMethod aCompiledMethod push llist col|
+
+ iRMethod := (IRBuilder new)
+ numRargs:1;
+ addTemps:#( #self );
+ pushLiteral:1;
+ returnTop;
+ ir.
+ push := (iRMethod allSequences last) at:(iRMethod allSequences size - 1).
+ llist := LinkedList new.
+ llist add:(IRInstruction pushLiteral:2).
+ llist add:(IRInstruction returnTop).
+ col := llist asOrderedCollection.
+ (iRMethod allSequences last) addInstructions:col before:push.
+ aCompiledMethod := iRMethod compiledCode.
+ self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
+!
+
+testDelete
+ |iRMethod aCompiledMethod|
+
+ iRMethod := (IRBuilder new)
+ numRargs:1;
+ addTemps:#( #self );
+ pushLiteral:1;
+ pushLiteral:2;
+ returnTop;
+ ir.
+ ((iRMethod allSequences last)
+ detect:[:each | each isConstant:[:c | c == 2 ] ]) delete.
+ aCompiledMethod := iRMethod compiledCode.
+ self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 1 ].
+!
+
+testReplace
+ |iRMethod aCompiledMethod|
+
+ iRMethod := (IRBuilder new)
+ numRargs:1;
+ addTemps:#( #self );
+ pushLiteral:1;
+ returnTop;
+ ir.
+ (iRMethod allSequences last at:1)
+ replaceWith:(IRInstruction pushLiteral:2).
+ aCompiledMethod := iRMethod compiledCode.
+ self should:[ (aCompiledMethod valueWithReceiver:nil arguments:#()) = 2 ].
+!
+
+testReplaceInstr
+
+ | iRMethod aCompiledMethod |
+
+ iRMethod := IRBuilder new
+ numRargs: 1;
+ addTemps: #(self); "receiver and args declarations"
+ pushLiteral: 1;
+ returnTop;
+ ir.
+
+ (iRMethod allSequences last at: 1)
+ replaceWithInstructions: {(IRInstruction pushLiteral: 2)}.
+
+ aCompiledMethod := iRMethod compiledCode.
+ self should: [(aCompiledMethod valueWithReceiver: nil arguments: #() ) = 2].
+
+ "Modified: / 30-03-2009 / 19:40:30 / Jan Vrany <vranyj1@fel.cvut.cz>"
+! !
+
+!IRTransformTest class methodsFor:'documentation'!
+
+version_CVS
+ ^ 'Header: /cvs/stx/cvut/stx/goodies/newcompiler/IRTransformTest.st,v 1.3 2009/10/08 11:56:52 fm Exp '
+!
+
+version_SVN
+ ^ '$Id:: $'
+! !
+