@Test public void testSimpleInt() throws NoSuchMethodException, SecurityException, ClassNotFoundException, ConstructionFailedException { Properties.TARGET_CLASS = TrivialInt.class.getCanonicalName(); TestChromosome test1 = new TestChromosome(); test1.setTestCase(getIntTest(-1000000)); TestChromosome test2 = (TestChromosome) test1.clone(); TestSuiteChromosome suite = new TestSuiteChromosome(); BranchCoverageSuiteFitness fitness = new BranchCoverageSuiteFitness(); assertEquals(4.0, fitness.getFitness(suite), 0.0F); suite.addTest(test1); assertEquals(1.0, fitness.getFitness(suite), 0.0F); suite.addTest(test2); assertEquals(1.0, fitness.getFitness(suite), 0.01F); // 0.99... Properties.P_TEST_CHANGE = 1.0; Properties.P_TEST_DELETE = 0.0; Properties.P_TEST_INSERT = 0.0; Properties.PRIMITIVE_POOL = 0.0; double oldFitness = suite.getFitness(); int notChanged = 0; for (int i = 0; i < 10000; i++) { TestChromosome testNew = (TestChromosome) test1.clone(); testNew.mutate(); if (testNew.isChanged()) { suite.deleteTest(test1); suite.addTest(testNew); double newFitness = fitness.getFitness(suite); if (newFitness < oldFitness) { test1 = testNew; oldFitness = newFitness; System.out.println( "" + i + ":" + ((IntPrimitiveStatement) test1.getTestCase().getStatement(1)).getValue()); if (newFitness == 0.0) { System.out.println("Iterations: " + i); System.out.println("Not changed: " + notChanged); break; } } else { suite.deleteTest(testNew); suite.addTest(test1); fitness.getFitness(suite); } } else { notChanged++; } } System.out.println("Fitness: " + fitness.getFitness(suite)); System.out.println("Test suite: " + suite); assertEquals(0.0, fitness.getFitness(suite), 0.1F); }
@Test public void testTwoInts() throws NoSuchMethodException, SecurityException, ClassNotFoundException, ConstructionFailedException { Properties.TARGET_CLASS = IntExampleWithNoElse.class.getCanonicalName(); TestChromosome test1 = new TestChromosome(); test1.setTestCase(getTwoIntTest(1, 22, 22, 22)); TestChromosome test2 = new TestChromosome(); test2.setTestCase(getTwoIntTest(-23423423, 234234234, -23423423, 234234234)); TestChromosome test3 = new TestChromosome(); test3.setTestCase(getTwoIntTest(0, 0, 0, 0)); TestSuiteChromosome suite = new TestSuiteChromosome(); BranchCoverageSuiteFitness fitness = new BranchCoverageSuiteFitness(); assertEquals(6.0, fitness.getFitness(suite), 0.0F); suite.addTest(test1); assertEquals(2.0, fitness.getFitness(suite), 0.0F); suite.addTest(test2); suite.addTest(test3); Class<?> sut = TestGenerationContext.getInstance() .getClassLoaderForSUT() .loadClass(Properties.TARGET_CLASS); Method m = sut.getMethod("testMe", new Class<?>[] {int.class, int.class}); GenericMethod method = new GenericMethod(m, sut); TestCluster.getInstance().addTestCall(method); Properties.P_TEST_CHANGE = 0.0; Properties.P_TEST_DELETE = 1.0; Properties.P_TEST_INSERT = 0.0; double oldFitness = fitness.getFitness(suite); int notChanged = 0; System.out.println("Original: " + test1); for (int i = 0; i < 100; i++) { TestChromosome testNew = (TestChromosome) test1.clone(); testNew.mutate(); if (testNew.isChanged()) { System.out.println("Trying: " + testNew); suite.deleteTest(test1); suite.addTest(testNew); double newFitness = fitness.getFitness(suite); if (newFitness < oldFitness) { test1 = testNew; oldFitness = newFitness; if (newFitness == 0.0) { System.out.println("Iterations: " + i); System.out.println("Not changed: " + notChanged); break; } } else { suite.deleteTest(testNew); suite.addTest(test1); fitness.getFitness(suite); } } else { notChanged++; } } System.out.println("Fitness: " + fitness.getFitness(suite)); System.out.println("Test suite: " + suite); assertEquals(0.0, fitness.getFitness(suite), 0.1F); }
@Test public void testSimpleInt() throws NoSuchMethodException, SecurityException, ClassNotFoundException, ConstructionFailedException { Properties.TARGET_CLASS = TrivialInt.class.getCanonicalName(); TestChromosome test1 = new TestChromosome(); test1.setTestCase(getIntTest(2938, -1000000)); TestChromosome test2 = (TestChromosome) test1.clone(); TestSuiteChromosome suite = new TestSuiteChromosome(); BranchCoverageSuiteFitness fitness = new BranchCoverageSuiteFitness(); assertEquals(4.0, fitness.getFitness(suite), 0.0F); suite.addTest(test1); assertEquals(1.0, fitness.getFitness(suite), 0.0F); suite.addTest(test2); assertEquals(1.0, fitness.getFitness(suite), 0.01F); // 0.99... Class<?> sut = TestGenerationContext.getInstance() .getClassLoaderForSUT() .loadClass(Properties.TARGET_CLASS); Method m = sut.getMethod("testMe", new Class<?>[] {int.class}); GenericMethod method = new GenericMethod(m, sut); TestCluster.getInstance().addTestCall(method); Properties.P_TEST_CHANGE = 0.0; Properties.P_TEST_DELETE = 1.0; Properties.P_TEST_INSERT = 0.0; double oldFitness = suite.getFitness(); int notChanged = 0; for (int i = 0; i < 100; i++) { TestChromosome testNew = (TestChromosome) test1.clone(); testNew.mutate(); if (testNew.isChanged()) { suite.deleteTest(test1); suite.addTest(testNew); System.out.println(testNew.getTestCase().toCode()); double newFitness = fitness.getFitness(suite); if (newFitness < oldFitness) { System.out.println("Improved: " + newFitness); test1 = testNew; oldFitness = newFitness; System.out.println( "" + i + ":" + ((IntPrimitiveStatement) test1.getTestCase().getStatement(1)).getValue()); if (newFitness == 0.0) { System.out.println("Iterations: " + i); System.out.println("Not changed: " + notChanged); break; } } else { System.out.println("Not improved: " + newFitness); suite.deleteTest(testNew); suite.addTest(test1); fitness.getFitness(suite); } } else { notChanged++; } } System.out.println("Fitness: " + fitness.getFitness(suite)); System.out.println("Test suite: " + suite); assertEquals(0.0, fitness.getFitness(suite), 0.1F); }