public class DomTreeTest extends TestCase {
private ClassPool pool = ClassPool.getDefault();
public void testDomtree() throws Exception {
ControlFlow cf = new ControlFlow(pool.get(DomTreeTest.class.getName()).getDeclaredMethod("test1"));
Block[] blocks = cf.basicBlocks();
// for (int i = 0; i < blocks.length; i++)
// System.out.println(i + ": " + blocks[i]);
testBlock(blocks[0], new int[] {}, new int[] { 11, 6 } );
testBlock(blocks[1], new int[] { 0 }, new int[] { 17, 11 } );
testBlock(blocks[2], new int[] { 0, 6 }, new int[] { 19, 17 });
testBlock(blocks[3], new int[] { 6, 11 }, new int[] { 19 });
testBlock(blocks[4], new int[] { 11, 17 }, new int[] {});
Node[] dom = cf.dominatorTree();
assertNull(dom[0].parent());
assertEquals(0, dom[1].parent().block().position());
assertEquals(0, dom[2].parent().block().position());
assertEquals(0, dom[3].parent().block().position());
assertEquals(0, dom[4].parent().block().position());
Node[] pdom = cf.postDominatorTree();
assertEquals(19, pdom[0].parent().block().position());
assertEquals(19, pdom[1].parent().block().position());
assertEquals(19, pdom[2].parent().block().position());
assertEquals(19, pdom[3].parent().block().position());
assertNull(pdom[4].parent());