@Test public void testComparisonZeroNE() { // x != 0 vs x == 0 assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance(0, Opcodes.IFNE, Opcodes.IFEQ), 0.0); assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance(1, Opcodes.IFNE, Opcodes.IFEQ), 0.0); assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance(-1, Opcodes.IFNE, Opcodes.IFEQ), 0.0); // x != 0 vs x < 0 assertEquals( 1.0, ReplaceComparisonOperator.getInfectionDistance(0, Opcodes.IFNE, Opcodes.IFLT), 0.0); assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance(1, Opcodes.IFNE, Opcodes.IFLT), 0.0); assertEquals( 2.0, ReplaceComparisonOperator.getInfectionDistance(-1, Opcodes.IFNE, Opcodes.IFLT), 0.0); // x != 0 vs x <= 0 assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance(0, Opcodes.IFNE, Opcodes.IFLE), 0.0); assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance(1, Opcodes.IFNE, Opcodes.IFLE), 0.0); assertEquals( 1.0, ReplaceComparisonOperator.getInfectionDistance(-1, Opcodes.IFNE, Opcodes.IFLE), 0.0); // x != 0 vs x > 0 assertEquals( 1.0, ReplaceComparisonOperator.getInfectionDistance(0, Opcodes.IFNE, Opcodes.IFGT), 0.0); assertEquals( 2.0, ReplaceComparisonOperator.getInfectionDistance(1, Opcodes.IFNE, Opcodes.IFGT), 0.0); assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance(-1, Opcodes.IFNE, Opcodes.IFGT), 0.0); // x != 0 vs x >= 0 assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance(0, Opcodes.IFNE, Opcodes.IFGE), 0.0); assertEquals( 1.0, ReplaceComparisonOperator.getInfectionDistance(1, Opcodes.IFNE, Opcodes.IFGE), 0.0); assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance(-1, Opcodes.IFNE, Opcodes.IFGE), 0.0); }
@Test public void testComparisonTwoEQ2() { // x == 0 vs x != 0 assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance( 10, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPNE), 0.0); assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance( 11, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPNE), 0.0); assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance( -11, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPNE), 0.0); // x == 0 vs x < 0 assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance( 10, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPLT), 0.0); assertEquals( 1.0, ReplaceComparisonOperator.getInfectionDistance( 11, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPLT), 0.0); assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance( -11, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPLT), 0.0); // x == 0 vs x <= 0 assertEquals( 1.0, ReplaceComparisonOperator.getInfectionDistance( 10, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPLE), 0.0); assertEquals( 2.0, ReplaceComparisonOperator.getInfectionDistance( 11, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPLE), 0.0); assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance( -11, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPLE), 0.0); // x == 0 vs x > 0 assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance( 10, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPGT), 0.0); assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance( 11, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPGT), 0.0); assertEquals( 21.0, ReplaceComparisonOperator.getInfectionDistance( -11, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPGT), 0.0); // x == 0 vs x >= 0 assertEquals( 1.0, ReplaceComparisonOperator.getInfectionDistance( 10, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPGE), 0.0); assertEquals( 0.0, ReplaceComparisonOperator.getInfectionDistance( 11, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPGE), 0.0); assertEquals( 22.0, ReplaceComparisonOperator.getInfectionDistance( -11, 10, Opcodes.IF_ICMPEQ, Opcodes.IF_ICMPGE), 0.0); }