@Test public void testReturnOneExitBlock() { String input = "if(!x) return 1; y = x;"; CFG cfg = getCFGForCode(input); assertTrue(isConnected(cfg, "y = x", "EXIT")); assertTrue(cfg.outDegree(getNodeByCode(cfg, "y = x")) == 1); }
@Test public void testEmptyFor() { String input = "for(;;){}"; CFG cfg = getCFGForCode(input); CFGNode node = getNodeByCode(cfg, "INFINITE FOR"); assertTrue(node instanceof InfiniteForNode); assertTrue(cfg.size() == 3); }
@Test public void testLinkBetweenBlocks() { String input = "x = 10; y = 20;"; CFG cfg = getCFGForCode(input); assertTrue(cfg.numberOfEdges() == 3); }
@Test public void testTwoInstructions() { String input = "x = 10; y = 20;"; CFG cfg = getCFGForCode(input); assertTrue(cfg.size() == 4); }
@Test public void testSwitchWithDefaultLabelNumberOfEdges() { String input = "switch(foo){ case 1: case2: default: }"; CFG cfg = getCFGForCode(input); assertTrue(cfg.numberOfEdges() == 7); }
@Test public void testSwitchWithBreakNumberOfEdges() { String input = "switch(foo){ case 1: break; case2: break; case 3: }"; CFG cfg = getCFGForCode(input); assertTrue(cfg.numberOfEdges() == 10); }
@Test public void testSwitchNumberOfEdges() { String input = "switch(foo){ case 1: case2: case 3: }"; CFG cfg = getCFGForCode(input); assertTrue(cfg.numberOfEdges() == 8); }
@Test public void testForNumberOfBlocks() { String input = "for(i = 0; i < 10; i ++){ foo(); }"; CFG cfg = getCFGForCode(input); assertTrue(cfg.size() == 6); }
@Test public void testDoNumberOfBlocks() { String input = "do{ bar(); }while(foo);"; CFG cfg = getCFGForCode(input); assertTrue(cfg.size() == 4); }
@Test public void testSingleCallBlockNumber() { String input = "foo();"; CFG cfg = getCFGForCode(input); assertTrue(cfg.size() == 3); }