+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks;\r
-\r
-import java.util.Iterator;\r
-\r
-import junit.framework.Assert;\r
-\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import org.objectweb.asm.ClassReader;\r
-import org.objectweb.asm.ClassWriter;\r
-\r
-public class ControlFlowGraphTest {\r
- private ControlFlowGraphExtractVisitor cfVisitor;\r
- private ControlFlowGraphExtractVisitor cfVisitor2;\r
-\r
- @Before\r
- public void setUp() throws Exception{\r
- ClassReader reader1 = new ClassReader(getClass().getResource("/resources/MyServer.class").openStream());\r
- cfVisitor = new ControlFlowGraphExtractVisitor(new ClassWriter(0));\r
- reader1.accept(cfVisitor, 0);\r
-\r
- ClassReader reader2 = new ClassReader(getClass().getResource("/resources/MyServer2.class").openStream());\r
- cfVisitor2 = new ControlFlowGraphExtractVisitor(new ClassWriter(0));\r
- reader2.accept(cfVisitor2, 0);\r
- }\r
-\r
- @Test\r
- public void testBasic() throws Exception{\r
- Iterator<String> iterator = cfVisitor.getMethodNames();\r
-\r
- Assert.assertTrue(iterator.hasNext());\r
- Assert.assertEquals("<init>(I)V", iterator.next());\r
- Assert.assertFalse(iterator.hasNext());\r
-\r
- ControlFlowGraph graph = cfVisitor.getGraph("<init>(I)V");\r
- Assert.assertEquals(6, graph.getBasicBlockSize());\r
- graph.setIncludingExceptionFlow(true);\r
-\r
- Assert.assertEquals(6, graph.getBasicBlockSize());\r
- }\r
-\r
- @Test\r
- public void testGraph() throws Exception{\r
- int[][] graph = cfVisitor.getGraph("<init>(I)V").getGraphMatrix();\r
-\r
- Assert.assertEquals(6, graph.length);\r
-\r
- Assert.assertEquals(0, graph[0][0]);\r
- Assert.assertEquals(1, graph[0][1]);\r
- Assert.assertEquals(1, graph[0][2]);\r
- Assert.assertEquals(0, graph[0][3]);\r
- Assert.assertEquals(0, graph[0][4]);\r
- Assert.assertEquals(0, graph[0][5]);\r
-\r
- Assert.assertEquals(0, graph[1][0]);\r
- Assert.assertEquals(0, graph[1][1]);\r
- Assert.assertEquals(0, graph[1][2]);\r
- Assert.assertEquals(1, graph[1][3]);\r
- Assert.assertEquals(0, graph[1][4]);\r
- Assert.assertEquals(0, graph[1][5]);\r
-\r
- Assert.assertEquals(0, graph[2][0]);\r
- Assert.assertEquals(0, graph[2][1]);\r
- Assert.assertEquals(0, graph[2][2]);\r
- Assert.assertEquals(1, graph[2][3]);\r
- Assert.assertEquals(0, graph[2][4]);\r
- Assert.assertEquals(0, graph[2][5]);\r
-\r
- Assert.assertEquals(0, graph[3][0]);\r
- Assert.assertEquals(0, graph[3][1]);\r
- Assert.assertEquals(0, graph[3][2]);\r
- Assert.assertEquals(0, graph[3][3]);\r
- Assert.assertEquals(0, graph[3][4]);\r
- Assert.assertEquals(1, graph[3][5]);\r
-\r
- Assert.assertEquals(0, graph[4][0]);\r
- Assert.assertEquals(0, graph[4][1]);\r
- Assert.assertEquals(0, graph[4][2]);\r
- Assert.assertEquals(0, graph[4][3]);\r
- Assert.assertEquals(0, graph[4][4]);\r
- Assert.assertEquals(1, graph[4][5]);\r
-\r
- Assert.assertEquals(0, graph[5][0]);\r
- Assert.assertEquals(0, graph[5][1]);\r
- Assert.assertEquals(0, graph[5][2]);\r
- Assert.assertEquals(0, graph[5][3]);\r
- Assert.assertEquals(0, graph[5][4]);\r
- Assert.assertEquals(0, graph[5][5]);\r
- }\r
-\r
- @Test\r
- public void testExceptionGraph() throws Exception{\r
- ControlFlowGraph cfgraph = cfVisitor.getGraph("<init>(I)V");\r
- cfgraph.setIncludingExceptionFlow(true);\r
- int[][] graph = cfgraph.getGraphMatrix();\r
-\r
- Assert.assertEquals(6, graph.length);\r
-\r
- Assert.assertEquals(0, graph[0][0]);\r
- Assert.assertEquals(1, graph[0][1]);\r
- Assert.assertEquals(1, graph[0][2]);\r
- Assert.assertEquals(0, graph[0][3]);\r
- Assert.assertEquals(1, graph[0][4]);\r
- Assert.assertEquals(0, graph[0][5]);\r
-\r
- Assert.assertEquals(0, graph[1][0]);\r
- Assert.assertEquals(0, graph[1][1]);\r
- Assert.assertEquals(0, graph[1][2]);\r
- Assert.assertEquals(1, graph[1][3]);\r
- Assert.assertEquals(1, graph[1][4]);\r
- Assert.assertEquals(0, graph[1][5]);\r
-\r
- Assert.assertEquals(0, graph[2][0]);\r
- Assert.assertEquals(0, graph[2][1]);\r
- Assert.assertEquals(0, graph[2][2]);\r
- Assert.assertEquals(1, graph[2][3]);\r
- Assert.assertEquals(1, graph[2][4]);\r
- Assert.assertEquals(0, graph[2][5]);\r
-\r
- Assert.assertEquals(0, graph[3][0]);\r
- Assert.assertEquals(0, graph[3][1]);\r
- Assert.assertEquals(0, graph[3][2]);\r
- Assert.assertEquals(0, graph[3][3]);\r
- Assert.assertEquals(1, graph[3][4]);\r
- Assert.assertEquals(1, graph[3][5]);\r
-\r
- Assert.assertEquals(0, graph[4][0]);\r
- Assert.assertEquals(0, graph[4][1]);\r
- Assert.assertEquals(0, graph[4][2]);\r
- Assert.assertEquals(0, graph[4][3]);\r
- Assert.assertEquals(0, graph[4][4]);\r
- Assert.assertEquals(1, graph[4][5]);\r
-\r
- Assert.assertEquals(0, graph[5][0]);\r
- Assert.assertEquals(0, graph[5][1]);\r
- Assert.assertEquals(0, graph[5][2]);\r
- Assert.assertEquals(0, graph[5][3]);\r
- Assert.assertEquals(0, graph[5][4]);\r
- Assert.assertEquals(0, graph[5][5]);\r
- }\r
-\r
- @Test\r
- public void testBasic2() throws Exception{\r
- Iterator<String> iterator = cfVisitor2.getMethodNames();\r
-\r
- Assert.assertTrue(iterator.hasNext());\r
- Assert.assertEquals("<init>(I)V", iterator.next());\r
- Assert.assertFalse(iterator.hasNext());\r
-\r
- ControlFlowGraph graph = cfVisitor2.getGraph("<init>(I)V");\r
-\r
- Assert.assertEquals(6, graph.getBasicBlockSize());\r
-\r
- // graph.setIncludingExceptionFlow(true);\r
- // Assert.assertEquals(6, graph.getBasicBlockSize());\r
- }\r
-\r
- @Test\r
- public void testGraph2() throws Exception{\r
- ControlFlowGraph graph = cfVisitor2.getGraph("<init>(I)V");\r
- int[][] graphMatrix = graph.getGraphMatrix();\r
-\r
- Assert.assertEquals(6, graphMatrix.length);\r
-\r
- Assert.assertEquals(0, graphMatrix[0][0]);\r
- Assert.assertEquals(1, graphMatrix[0][1]);\r
- Assert.assertEquals(1, graphMatrix[0][2]);\r
- Assert.assertEquals(0, graphMatrix[0][3]);\r
- Assert.assertEquals(0, graphMatrix[0][4]);\r
- Assert.assertEquals(0, graphMatrix[0][5]);\r
-\r
- Assert.assertEquals(0, graphMatrix[1][0]);\r
- Assert.assertEquals(0, graphMatrix[1][1]);\r
- Assert.assertEquals(0, graphMatrix[1][2]);\r
- Assert.assertEquals(1, graphMatrix[1][3]);\r
- Assert.assertEquals(0, graphMatrix[1][4]);\r
- Assert.assertEquals(0, graphMatrix[1][5]);\r
-\r
- Assert.assertEquals(0, graphMatrix[2][0]);\r
- Assert.assertEquals(0, graphMatrix[2][1]);\r
- Assert.assertEquals(0, graphMatrix[2][2]);\r
- Assert.assertEquals(1, graphMatrix[2][3]);\r
- Assert.assertEquals(0, graphMatrix[2][4]);\r
- Assert.assertEquals(0, graphMatrix[2][5]);\r
-\r
- Assert.assertEquals(0, graphMatrix[3][0]);\r
- Assert.assertEquals(0, graphMatrix[3][1]);\r
- Assert.assertEquals(0, graphMatrix[3][2]);\r
- Assert.assertEquals(0, graphMatrix[3][3]);\r
- Assert.assertEquals(0, graphMatrix[3][4]);\r
- Assert.assertEquals(1, graphMatrix[3][5]);\r
-\r
- Assert.assertEquals(0, graphMatrix[4][0]);\r
- Assert.assertEquals(0, graphMatrix[4][1]);\r
- Assert.assertEquals(0, graphMatrix[4][2]);\r
- Assert.assertEquals(0, graphMatrix[4][3]);\r
- Assert.assertEquals(0, graphMatrix[4][4]);\r
- Assert.assertEquals(1, graphMatrix[4][5]);\r
-\r
- Assert.assertEquals(0, graphMatrix[5][0]);\r
- Assert.assertEquals(0, graphMatrix[5][1]);\r
- Assert.assertEquals(0, graphMatrix[5][2]);\r
- Assert.assertEquals(0, graphMatrix[5][3]);\r
- Assert.assertEquals(0, graphMatrix[5][4]);\r
- Assert.assertEquals(0, graphMatrix[5][5]);\r
- }\r
-}\r