예제 #1
0
  @Test
  public void testMergeBranches() {
    firstClass.addLine(1, "helloWorld", "()V");
    firstClass.addLineJump(1, 0);
    firstClass.addLine(2, "helloWorld", "()V");
    firstClass.addLineJump(2, 0);
    firstClass.addLineJump(2, 1);
    firstClass.addLine(3, "helloWorld", "()V");
    firstClass.addLine(4, "helloWorld", "()V");
    firstClass.addLineSwitch(4, 0, 0, 2);
    firstClass.addLine(5, "helloWorld", "()V");
    firstClass.addLine(8, "helloWorld", "()V");
    greenProject.addClassData(firstClass);

    firstClassB.addLine(1, "helloWorld", "()V");
    firstClassB.addLineJump(1, 0);
    firstClassB.addLine(2, "helloWorld", "()V");
    firstClassB.addLine(3, "helloWorld", "()V");
    firstClassB.addLineSwitch(3, 0, 2, 4);
    firstClassB.addLine(6, "helloWorld", "()V");
    firstClassB.addLineJump(6, 0);
    firstClassB.addLine(7, "helloWorld", "()V");
    firstClassB.addLine(8, "helloWorld", "()V");
    redProject.addClassData(firstClassB);

    greenProject.merge(redProject);

    ClassData cd = greenProject.getClassData("test.First");

    Iterator lines = cd.getLines().iterator();

    LineData line1 = (LineData) lines.next();
    assertTrue(line1.hasBranch());
    LineData line2 = (LineData) lines.next();
    assertTrue(line2.hasBranch());
    LineData line3 = (LineData) lines.next();
    assertTrue(line3.hasBranch());
    LineData line4 = (LineData) lines.next();
    assertTrue(line4.hasBranch());
    LineData line5 = (LineData) lines.next();
    assertFalse(line5.hasBranch());
    LineData line6 = (LineData) lines.next();
    assertTrue(line6.hasBranch());
    LineData line7 = (LineData) lines.next();
    assertFalse(line7.hasBranch());
    LineData line8 = (LineData) lines.next();
    assertFalse(line8.hasBranch());
    assertFalse(lines.hasNext());
  }
예제 #2
0
 public void putJumpTouchPoint(int classLine, int trueCounterId, int falseCounterId) {
   updateLine(classLine);
   LineData ld = getOrCreateLine(classLine);
   int branchId = jumpsInLine++;
   classData.addLineJump(classLine, branchId);
   ld.touchJump(branchId, true, res[trueCounterId]);
   ld.touchJump(branchId, false, res[falseCounterId]);
 }