1 /* TestVertexData.java */ 2 package org.quilt.cl; 3 4 import junit.framework.*; 5 import org.apache.bcel.generic.*; 6 import org.quilt.graph.*; 7 8 /*** 9 * Vertex data is the additional data differentiating a CodeVertex 10 * from a simple Vertex. It consists of a bytecode position, a 11 * label, and the InstructionList. 12 * 13 * XXX This code tested a now-obsolete data structure; it should be 14 * beefed up or dropped. 15 * 16 * @author <a href="jddixon@users.sourceforge.net">Jim Dixon</a> 17 */ 18 public class TestVertexData extends TestCase { 19 20 private ControlFlowGraph cfg; 21 22 private CodeVertex node; 23 24 public TestVertexData (String name) { 25 super(name); 26 } 27 28 public void setUp () { 29 cfg = new ControlFlowGraph(); 30 node = new CodeVertex (cfg, 3); // position of no significance 31 } 32 33 public void testNewNode() { 34 assertEquals ("empty node has wrong position", 35 3, node.getPosition() ); 36 assertTrue ("empty node has something in it", 37 node.getInstructionList().isEmpty() ); 38 assertEquals("empty node has something in instruction list", 39 0, node.getInstructionList().size() ); 40 } 41 // in fact this would become several nodes, but for testing ... 42 public void testWhileNode() { 43 InstructionList ilist = node.getInstructionList(); 44 ilist.append ( new ILOAD (1) ); 45 InstructionHandle ifHandle = ilist.append ( new DUP () ); 46 InstructionHandle loopHandle = ilist.append ( new ICONST( 1 ) ); 47 ilist.append( new ISUB() ); 48 ilist.append( new GOTO( ifHandle )); 49 InstructionHandle retHandle = ilist.append ( new IRETURN() ); 50 ilist.insert( loopHandle, new IFLE( retHandle )); 51 52 assertEquals ("'while' node has wrong position", 53 3, node.getPosition() ); 54 assertTrue ("'while' node has nothing in it", 55 !node.getInstructionList().isEmpty() ); 56 assertEquals("'while' node has wrong size instruction list", 57 7, node.getInstructionList().size() ); 58 59 ControlFlowGraph graph = new ControlFlowGraph(); 60 CodeVertex v = graph.insertCodeVertex ( graph.getEntry().getEdge() ); 61 v.setPos(node.getPosition()); 62 assertEquals ("new vertex has wrong bytecode position", 63 node.getPosition(), 64 v.getPosition() ); 65 } 66 }

This page was automatically generated by Maven