test1.addCoveredGoal(goal1); test1.addCoveredGoal(goal2); test1.addCoveredGoal(goal3); test1.addCoveredGoal(goal5); test1.addCoveredGoal(goal6); test2.addCoveredGoal(goal1); test2.addCoveredGoal(goal2); test2.addCoveredGoal(goal3); test2.addCoveredGoal(goal4); test2.addCoveredGoal(goal5); test2.addCoveredGoal(goal6);
@Test public void testExactSameTests() throws NoSuchMethodException, ConstructionFailedException, ClassNotFoundException { // method goals TestFitnessFunction goal1 = new MethodCoverageTestFitness("FooClass","values([B)[B"); TestFitnessFunction goal2 = new MethodCoverageTestFitness("FooClass","values()[B"); // output goals TestFitnessFunction goal4 = new OutputCoverageTestFitness(new OutputCoverageGoal("FooClass", "values([B)",Type.getType("[B"), ARRAY_EMPTY)); TestFitnessFunction goal5 = new OutputCoverageTestFitness(new OutputCoverageGoal("FooClass", "values()",Type.getType("[B"), ARRAY_NONEMPTY)); DefaultTestCase test1 = new DefaultTestCase(); test1.addCoveredGoal(goal1); test1.addCoveredGoal(goal2); test1.addCoveredGoal(goal4); test1.addCoveredGoal(goal5); DefaultTestCase test2 = new DefaultTestCase(); test2.addStatement(new IntPrimitiveStatement(test2, 2)); // Need to add statements to change hashCode test2.addCoveredGoal(goal1); test2.addCoveredGoal(goal2); test2.addCoveredGoal(goal4); test2.addCoveredGoal(goal5); ArrayList<TestCase> testCases = new ArrayList<>(); testCases.add(test1); testCases.add(test2); CoverageGoalTestNameGenerationStrategy naming = new CoverageGoalTestNameGenerationStrategy(testCases); String nameTest1 = naming.getName(test1); String nameTest2 = naming.getName(test2); assertEquals("Generated test name differs from expected", "testValuesTakingNoArgumentsReturningNonEmptyArray", nameTest1); assertEquals("Generated test name differs from expected", "testValuesTakingByteArrayReturningEmptyArray", nameTest2); }
@Test public void testTwoTestsOutputGoals() throws NoSuchMethodException, ConstructionFailedException, ClassNotFoundException { TestFitnessFunction goal1 = new MethodCoverageTestFitness("FooClass","keys()[I"); TestFitnessFunction goal2 = new MethodCoverageTestFitness("FooClass", "<init>(LFooClass;)V"); TestFitnessFunction goal3 = new OutputCoverageTestFitness(new OutputCoverageGoal("FooClass", "keys()",Type.INT_TYPE, NUM_NEGATIVE)); TestFitnessFunction goal4 = new OutputCoverageTestFitness(new OutputCoverageGoal("FooClass", "keys()",Type.INT_TYPE, NUM_POSITIVE)); DefaultTestCase test1 = new DefaultTestCase(); test1.addCoveredGoal(goal1); test1.addCoveredGoal(goal2); test1.addCoveredGoal(goal3); DefaultTestCase test2 = new DefaultTestCase(); test2.addStatement(new IntPrimitiveStatement(test2, 2)); // Need to add statements to change hashCode test2.addCoveredGoal(goal1); test2.addCoveredGoal(goal2); test2.addCoveredGoal(goal4); ArrayList<TestCase> testCases = new ArrayList<>(); testCases.add(test1); testCases.add(test2); CoverageGoalTestNameGenerationStrategy naming = new CoverageGoalTestNameGenerationStrategy(testCases); String nameTest1 = naming.getName(test1); String nameTest2 = naming.getName(test2); assertEquals("Generated test name differs from expected", "testKeysTakingNoArgumentsReturningNegative", nameTest1); // TODO: testKeysReturningNegative? assertEquals("Generated test name differs from expected", "testKeysTakingNoArgumentsReturningPositive", nameTest2); // TODO: testKeysReturningPositive? }
@Test public void testConstructors() throws NoSuchMethodException, ConstructionFailedException, ClassNotFoundException { // method goal TestFitnessFunction goal1 = new MethodCoverageTestFitness("FooClass", "<init>(LFooClass;)V"); // exception goal TestFitnessFunction goal2 = new ExceptionCoverageTestFitness("FooClass", "<init>(LFooClass;)V", ArrayIndexOutOfBoundsException.class, ExceptionCoverageTestFitness.ExceptionType.IMPLICIT); DefaultTestCase test1 = new DefaultTestCase(); test1.addCoveredGoal(goal1); DefaultTestCase test2 = new DefaultTestCase(); test2.addStatement(new IntPrimitiveStatement(test2, 2)); // Need to add statements to change hashCode test2.addCoveredGoal(goal1); test2.addCoveredGoal(goal2); ArrayList<TestCase> testCases = new ArrayList<>(); testCases.add(test1); testCases.add(test2); CoverageGoalTestNameGenerationStrategy naming = new CoverageGoalTestNameGenerationStrategy(testCases); String nameTest1 = naming.getName(test1); String nameTest2 = naming.getName(test2); assertEquals("Generated test name differs from expected", "testCreatesFooClass", nameTest1); assertEquals("Generated test name differs from expected", "testFailsToCreateFooClassThrowsArrayIndexOutOfBoundsException", nameTest2); }
@Test public void testOverloadedMethodsNoArgs() throws NoSuchMethodException, ConstructionFailedException, ClassNotFoundException { // Method goals TestFitnessFunction goal1 = new MethodCoverageTestFitness("FooClass", "<init>(LFooClass;)V"); TestFitnessFunction goal2 = new MethodCoverageTestFitness("FooClass","values([B)[B"); TestFitnessFunction goal3 = new MethodCoverageTestFitness("FooClass","values()[B"); // Output goals for method values TestFitnessFunction goal4 = new OutputCoverageTestFitness(new OutputCoverageGoal("FooClass", "values([B)",Type.getType("[B"), ARRAY_EMPTY)); TestFitnessFunction goal5 = new OutputCoverageTestFitness(new OutputCoverageGoal("FooClass", "values()",Type.getType("[B"), ARRAY_NONEMPTY)); DefaultTestCase test1 = new DefaultTestCase(); test1.addCoveredGoal(goal1); test1.addCoveredGoal(goal2); test1.addCoveredGoal(goal4); DefaultTestCase test2 = new DefaultTestCase(); test2.addStatement(new IntPrimitiveStatement(test2, 2)); // Need to add statements to change hashCode test2.addCoveredGoal(goal1); test2.addCoveredGoal(goal3); test2.addCoveredGoal(goal5); ArrayList<TestCase> testCases = new ArrayList<>(); testCases.add(test1); testCases.add(test2); CoverageGoalTestNameGenerationStrategy naming = new CoverageGoalTestNameGenerationStrategy(testCases); String nameTest1 = naming.getName(test1); String nameTest2 = naming.getName(test2); assertEquals("Generated test name differs from expected", "testValuesTakingByteArray", nameTest1); assertEquals("Generated test name differs from expected", "testValuesTakingNoArguments", nameTest2); }
@Test public void testOverloadedMethods() throws NoSuchMethodException, ConstructionFailedException, ClassNotFoundException { // Method goals TestFitnessFunction goal1 = new MethodCoverageTestFitness("FooClass", "<init>(LFooClass;)V"); TestFitnessFunction goal2 = new MethodCoverageTestFitness("FooClass","values([B)[B"); TestFitnessFunction goal3 = new MethodCoverageTestFitness("FooClass","values([I)[B"); // Output goals for method values TestFitnessFunction goal4 = new OutputCoverageTestFitness(new OutputCoverageGoal("FooClass", "values([B)",Type.getType("[B"), ARRAY_EMPTY)); TestFitnessFunction goal5 = new OutputCoverageTestFitness(new OutputCoverageGoal("FooClass", "values([I)",Type.getType("[B"),ARRAY_NONEMPTY)); DefaultTestCase test1 = new DefaultTestCase(); test1.addCoveredGoal(goal1); test1.addCoveredGoal(goal2); test1.addCoveredGoal(goal4); DefaultTestCase test2 = new DefaultTestCase(); test2.addStatement(new IntPrimitiveStatement(test2, 2)); // Need to add statements to change hashCode test2.addCoveredGoal(goal1); test2.addCoveredGoal(goal3); test2.addCoveredGoal(goal5); ArrayList<TestCase> testCases = new ArrayList<>(); testCases.add(test1); testCases.add(test2); CoverageGoalTestNameGenerationStrategy naming = new CoverageGoalTestNameGenerationStrategy(testCases); String nameTest1 = naming.getName(test1); String nameTest2 = naming.getName(test2); assertEquals("Generated test name differs from expected", "testValuesTakingByteArray", nameTest1); assertEquals("Generated test name differs from expected", "testValuesTakingIntArray", nameTest2); }
test1.addCoveredGoal(goal1); test1.addCoveredGoal(goal3); test1.addCoveredGoal(goal6); test1.addCoveredGoal(goal7); // unique test1.addCoveredGoal(goal9); // unique test2.addCoveredGoal(goal2); test2.addCoveredGoal(goal3); test2.addCoveredGoal(goal4); // unique test3.addCoveredGoal(goal1); test3.addCoveredGoal(goal2); test3.addCoveredGoal(goal3); test3.addCoveredGoal(goal5); // unique test3.addCoveredGoal(goal6); test3.addCoveredGoal(goal8); // unique
@Test public void testIDNamingWithSameMethodGoals() throws NoSuchMethodException, ConstructionFailedException, ClassNotFoundException { // method goals TestFitnessFunction goal1 = new MethodCoverageTestFitness("FooClass","<init>()V"); TestFitnessFunction goal2 = new MethodCoverageTestFitness("FooClass","getPublicID()Ljava/lang/String;"); TestFitnessFunction goal3 = new MethodCoverageTestFitness("FooClass","setPublicID(Ljava/lang/String;)LFooClass;"); // output goals TestFitnessFunction goal4 = new OutputCoverageTestFitness(new OutputCoverageGoal("FooClass", "getPublicID()",Type.getType("Ljava.lang.String;"), REF_NONNULL)); TestFitnessFunction goal5 = new OutputCoverageTestFitness(new OutputCoverageGoal("FooClass", "setPublicID(Ljava/lang/String;)",Type.getType("LFooClass;"), REF_NONNULL)); DefaultTestCase test1 = new DefaultTestCase(); test1.addStatement(new IntPrimitiveStatement(test1, 1)); // any statement to fool hashcode function test1.addCoveredGoal(goal1); test1.addCoveredGoal(goal2); test1.addCoveredGoal(goal4); DefaultTestCase test2 = new DefaultTestCase(); test2.addStatement(new IntPrimitiveStatement(test2, 2)); // any statement to fool hashcode function test2.addCoveredGoal(goal1); test2.addCoveredGoal(goal3); test2.addCoveredGoal(goal5); ArrayList<TestCase> testCases = new ArrayList<>(); testCases.add(test1); testCases.add(test2); CoverageGoalTestNameGenerationStrategy naming = new CoverageGoalTestNameGenerationStrategy(testCases); String nameTest1 = naming.getName(test1); String nameTest2 = naming.getName(test2); assertEquals("Generated test name differs from expected", "testGetPublicIDTakingNoArguments", nameTest1); // TODO: testGetPublicID ? assertEquals("Generated test name differs from expected", "testSetPublicIDTakingString", nameTest2); // TODO: testSetPublicID ? }
test1.addCoveredGoal(goal1); test2.addCoveredGoal(goal1); test2.addCoveredGoal(goal2); test2.addCoveredGoal(goal3); test3.addCoveredGoal(goal1); test3.addCoveredGoal(goal2); test3.addCoveredGoal(goal4);