@Test public void testIfZeroIntegerEqualZero() { initial.setRegisters(0, Integer.valueOf(0), "I"); VMTester.testVisitation(CLASS_NAME, "ifEqualZero()V", initial, IF_TRUE_VISITATIONS); }
@Test public void testIfEqualWithZeroAndZeroIsTrue() { initial.setRegisters(0, 0, "I"); VMTester.testVisitation(CLASS_NAME, "ifEqualZero()V", initial, IF_TRUE_VISITATIONS); }
@Test public void testIfLessOrEqualZeroWithOneIsFalse() { initial.setRegisters(0, 1, "I"); VMTester.testVisitation(CLASS_NAME, "ifLessOrEqualZero()V", initial, IF_FALSE_VISITATIONS); }
@Test public void testIfNotEqualWith0And1IsTrue() { initial.setRegisters(0, 0, "I", 1, 1, "I"); VMTester.testVisitation(CLASS_NAME, "ifNotEqual()V", initial, IF_TRUE_VISITATIONS); }
@Test public void testIfEqualWithBooleanAndChar() { initial.setRegisters(0, true, "Z", 1, (char) 1, "C"); VMTester.testVisitation(CLASS_NAME, "ifEqual()V", initial, IF_TRUE_VISITATIONS); }
@Test public void testIfEqualWithByteAndChar() { initial.setRegisters(0, (byte) 1, "B", 1, (char) 1, "C"); VMTester.testVisitation(CLASS_NAME, "ifEqual()V", initial, IF_TRUE_VISITATIONS); }
@Test public void testIfEqualWithByteAndFloat() { initial.setRegisters(0, (byte) 1, "B", 1, 1F, "F"); VMTester.testVisitation(CLASS_NAME, "ifEqual()V", initial, IF_TRUE_VISITATIONS); }
@Test public void testIfEqualWithByteAndLong() { initial.setRegisters(0, (byte) 1, "B", 1, 1L, "J"); VMTester.testVisitation(CLASS_NAME, "ifEqual()V", initial, IF_TRUE_VISITATIONS); }
@Test public void testIfEqualWithIntAndShort() { initial.setRegisters(0, 1, "I", 1, (short) 1, "S"); VMTester.testVisitation(CLASS_NAME, "ifEqual()V", initial, IF_TRUE_VISITATIONS); }
@Test public void testIfEqualWithShortAndChar() { initial.setRegisters(0, (short) 1, "S", 1, (char) 1, "C"); VMTester.testVisitation(CLASS_NAME, "ifEqual()V", initial, IF_TRUE_VISITATIONS); }
@Test public void testIfEqualWithShortAndLong() { initial.setRegisters(0, (short) 1, "S", 1, 1L, "J"); VMTester.testVisitation(CLASS_NAME, "ifEqual()V", initial, IF_TRUE_VISITATIONS); }
@Test public void testKnownPredicateVisitsExpectedLabel() { initial.setRegisters(0, 1, "Z"); int[] expectedAddresses = new int[] { 0, 1, 5, 8 }; VMTester.testVisitation(CLASS_NAME, METHOD_NAME, initial, expectedAddresses); }
@Test public void testUnhandledPredicateVisitsNextOp() { initial.setRegisters(0, 100, "S"); int[] expectedAddresses = new int[] { 0, 1, 4, 8 }; VMTester.testVisitation(CLASS_NAME, METHOD_NAME, initial, expectedAddresses); }
@Test public void canDivDoubleWithDivisionByZero() { initial.setRegisters(0, 5D, "D", 1, 0D, "D"); // Floats and doubles do not throw exceptions for div0 int[] expected = new int[] { 0, 2 }; VMTester.testVisitation(CLASS_NAME, "divDoubleWithCatch()V", initial, expected); }
@Test public void testIfGreaterOrEqualZeroWithNegativeOneIsFalse() { initial.setRegisters(0, -1, "I"); VMTester.testVisitation(CLASS_NAME, "ifGreaterOrEqualZero()V", initial, IF_FALSE_VISITATIONS); }
@Test public void testIfGreaterThanZeroWith0IsFalse() { initial.setRegisters(0, 0, "I"); VMTester.testVisitation(CLASS_NAME, "ifGreaterThanZero()V", initial, IF_FALSE_VISITATIONS); }
@Test public void testIfLessOrEqualZeroWithNegative1IsTrue() { initial.setRegisters(0, -1, "I"); VMTester.testVisitation(CLASS_NAME, "ifLessOrEqualZero()V", initial, IF_TRUE_VISITATIONS); }
@Test public void testIfEqualWithIntAndBoolean() { initial.setRegisters(0, 1, "I", 1, true, "Z"); VMTester.testVisitation(CLASS_NAME, "ifEqual()V", initial, IF_TRUE_VISITATIONS); }
@Test public void testKnownPredicateVisitsExpectedLabel() { initial.setRegisters(0, 1, "B"); int[] expectedAddresses = new int[] { 0, 1, 5, 8 }; VMTester.testVisitation(CLASS_NAME, METHOD_NAME, initial, expectedAddresses); }
@Test public void alwaysThrownExceptionIsBubbledUp() { ExecutionGraph graph = VMTester.execute(CLASS_NAME, "invokeMethodWhichThrowsNullPointerException()V"); HeapItem item = graph.getTerminatingRegisterConsensus(0); Class<?> exceptionClass = NullPointerException.class; Assert.assertEquals(exceptionClass, item.getValue().getClass()); Assert.assertEquals(ClassNameUtils.toInternal(exceptionClass), item.getType()); int[] expectedAddresses = new int[] { 0, 4, 5 }; VMTester.testVisitation(graph, expectedAddresses); HeapItem throwItem = graph.getTerminatingRegisterConsensus(MethodState.ThrowRegister); assertEquals(item, throwItem); }