use of org.evosuite.utils.generic.GenericConstructor in project evosuite by EvoSuite.
the class TestGenericAccessibleObject method testClassLoaderChange.
@Test
public void testClassLoaderChange() throws NoSuchMethodException, SecurityException, ConstructionFailedException {
Class<?> targetClass = com.examples.with.different.packagename.generic.GenericClassTwoParameters.class;
Method creatorMethod = targetClass.getMethod("create", new Class<?>[] {});
Method targetMethod = targetClass.getMethod("get", new Class<?>[] { Object.class });
Method inspectorMethod = targetClass.getMethod("testMe", new Class<?>[] {});
Constructor<?> intConst = Integer.class.getConstructor(new Class<?>[] { int.class });
GenericClass listOfInteger = new GenericClass(new TypeToken<com.examples.with.different.packagename.generic.GenericClassTwoParameters<Integer, Integer>>() {
}.getType());
GenericMethod genericCreatorMethod = new GenericMethod(creatorMethod, targetClass).getGenericInstantiationFromReturnValue(listOfInteger);
System.out.println(genericCreatorMethod.getGeneratedClass().toString());
GenericMethod genericMethod = new GenericMethod(targetMethod, targetClass).copyWithNewOwner(genericCreatorMethod.getGeneratedClass());
System.out.println(genericMethod.getGeneratedClass().toString());
DefaultTestCase test = new DefaultTestCase();
MethodStatement ms1 = new MethodStatement(test, genericCreatorMethod, (VariableReference) null, new ArrayList<VariableReference>());
test.addStatement(ms1);
IntPrimitiveStatement ps1 = (IntPrimitiveStatement) PrimitiveStatement.getPrimitiveStatement(test, int.class);
test.addStatement(ps1);
GenericConstructor intConstructor = new GenericConstructor(intConst, Integer.class);
List<VariableReference> constParam = new ArrayList<VariableReference>();
constParam.add(ps1.getReturnValue());
ConstructorStatement cs1 = new ConstructorStatement(test, intConstructor, constParam);
// test.addStatement(cs1);
List<VariableReference> callParam = new ArrayList<VariableReference>();
callParam.add(ps1.getReturnValue());
MethodStatement ms2 = new MethodStatement(test, genericMethod, ms1.getReturnValue(), callParam);
test.addStatement(ms2);
Inspector inspector = new Inspector(targetClass, inspectorMethod);
Assertion assertion = new InspectorAssertion(inspector, ms2, ms1.getReturnValue(), 0);
ms2.addAssertion(assertion);
String code = test.toCode();
ClassLoader loader = new InstrumentingClassLoader();
Properties.TARGET_CLASS = targetClass.getCanonicalName();
Properties.CRITERION = new Criterion[1];
Properties.CRITERION[0] = Criterion.MUTATION;
DefaultTestCase testCopy = test.clone();
testCopy.changeClassLoader(loader);
String code2 = testCopy.toCode();
Assert.assertEquals(code, code2);
Assert.assertEquals(code, test.toCode());
testCopy.removeAssertion(assertion);
Assert.assertEquals(code, test.toCode());
// test.removeAssertion(assertion);
test.removeAssertions();
System.out.println(test.toCode());
}
use of org.evosuite.utils.generic.GenericConstructor in project evosuite by EvoSuite.
the class TestTestSuiteMinimizer method minimizeSuiteHalfCoverageWithTwoFitnessFunctions.
@Test
public void minimizeSuiteHalfCoverageWithTwoFitnessFunctions() throws ClassNotFoundException, ConstructionFailedException, NoSuchMethodException, SecurityException {
Properties.TARGET_CLASS = FlagExample1.class.getCanonicalName();
Class<?> sut = TestGenerationContext.getInstance().getClassLoaderForSUT().loadClass(Properties.TARGET_CLASS);
GenericClass clazz = new GenericClass(sut);
DefaultTestCase test = new DefaultTestCase();
GenericConstructor gc = new GenericConstructor(clazz.getRawClass().getConstructors()[0], clazz);
TestFactory testFactory = TestFactory.getInstance();
testFactory.addConstructor(test, gc, 0, 0);
List<VariableReference> parameters = new ArrayList<VariableReference>();
for (int i = 0; i < 10; i++) {
IntPrimitiveStatement ips = new IntPrimitiveStatement(test, 28234 + i);
VariableReference vr = test.addStatement(ips, i + 1);
}
ConstructorStatement ct = new ConstructorStatement(test, gc, parameters);
Method m = clazz.getRawClass().getMethod("testMe", new Class<?>[] { int.class });
GenericMethod method = new GenericMethod(m, sut);
testFactory.addMethod(test, method, 11, 0);
assertEquals(12, test.size());
TestSuiteChromosome tsc = new TestSuiteChromosome();
tsc.addTest(test);
TestSuiteFitnessFunction branch = new BranchCoverageSuiteFitness();
double previous_branch_fitness = branch.getFitness(tsc);
tsc.setFitness(branch, previous_branch_fitness);
assertEquals(previous_branch_fitness, 2.0, 0.0);
TestSuiteFitnessFunction defuse = new DefUseCoverageSuiteFitness();
double previous_defuse_fitness = defuse.getFitness(tsc);
tsc.setFitness(defuse, previous_defuse_fitness);
assertEquals(previous_defuse_fitness, 0.0, 0.0);
List<TestFitnessFactory<? extends TestFitnessFunction>> factories = new ArrayList<TestFitnessFactory<? extends TestFitnessFunction>>();
factories.add(new BranchCoverageFactory());
factories.add(new DefUseCoverageFactory());
TestSuiteMinimizer minimizer = new TestSuiteMinimizer(factories);
minimizer.minimize(tsc, false);
assertEquals(1, tsc.getTests().size());
assertEquals(3, tsc.getTests().get(0).size());
// assertTrue(tsc.getTests().get(0).toCode().equals("FlagExample1 flagExample1_0 = new FlagExample1();\nint int0 = 28234;\nflagExample1_0.testMe(int0);\n"));
double branch_fitness = branch.getFitness(tsc);
assertEquals(previous_branch_fitness, branch_fitness, 0.0);
double defuse_fitness = defuse.getFitness(tsc);
assertEquals(previous_defuse_fitness, defuse_fitness, 0.0);
}
use of org.evosuite.utils.generic.GenericConstructor in project evosuite by EvoSuite.
the class FactoryTestSystemTest method testMethodFor.
@Test
public void testMethodFor() throws ConstructionFailedException, NoSuchMethodException, SecurityException, ClassNotFoundException {
TestFactory testFactory = TestFactory.getInstance();
Class<?> sut = TestGenerationContext.getInstance().getClassLoaderForSUT().loadClass(FactoryExample.class.getCanonicalName());
GenericConstructor constructor = new GenericConstructor(sut.getConstructor(), sut);
GenericMethod method = new GenericMethod(sut.getMethod("testByte", byte.class, byte.class), sut);
DefaultTestCase test = new DefaultTestCase();
Properties.PRIMITIVE_REUSE_PROBABILITY = 0.0;
Properties.OBJECT_REUSE_PROBABILITY = 0.0;
VariableReference var1 = testFactory.addConstructor(test, constructor, 0, 0);
testFactory.reset();
VariableReference var2 = testFactory.addConstructor(test, constructor, 1, 0);
testFactory.addMethodFor(test, var1, method, 2);
testFactory.reset();
testFactory.addMethodFor(test, var2, method, 3);
String code = test.toCode();
System.out.println(code);
assertEquals(8, test.size());
assertTrue(code.contains("factoryExample0.testByte"));
// byte2 is the first return value
assertTrue(code.contains("factoryExample1.testByte"));
}
use of org.evosuite.utils.generic.GenericConstructor in project evosuite by EvoSuite.
the class FactoryTestSystemTest method testFieldFor.
@Test
public void testFieldFor() throws ConstructionFailedException, NoSuchMethodException, SecurityException, ClassNotFoundException, NoSuchFieldException {
TestFactory testFactory = TestFactory.getInstance();
Class<?> sut = TestGenerationContext.getInstance().getClassLoaderForSUT().loadClass(FactoryExample.class.getCanonicalName());
GenericConstructor constructor = new GenericConstructor(sut.getConstructor(), sut);
GenericField field = new GenericField(sut.getField("setMe"), sut);
DefaultTestCase test = new DefaultTestCase();
Properties.PRIMITIVE_REUSE_PROBABILITY = 0.0;
Properties.OBJECT_REUSE_PROBABILITY = 0.0;
VariableReference var1 = testFactory.addConstructor(test, constructor, 0, 0);
testFactory.reset();
VariableReference var2 = testFactory.addConstructor(test, constructor, 1, 0);
testFactory.addFieldFor(test, var1, field, 2);
testFactory.reset();
testFactory.addFieldFor(test, var2, field, 3);
String code = test.toCode();
System.out.println(code);
assertEquals(6, test.size());
assertTrue(code.contains("factoryExample0.setMe"));
// byte2 is the first return value
assertTrue(code.contains("factoryExample1.setMe"));
}
use of org.evosuite.utils.generic.GenericConstructor in project evosuite by EvoSuite.
the class FactoryTestSystemTest method testAddConstructor.
@Test
public void testAddConstructor() throws ConstructionFailedException, NoSuchMethodException, SecurityException, ClassNotFoundException {
TestFactory testFactory = TestFactory.getInstance();
Class<?> sut = TestGenerationContext.getInstance().getClassLoaderForSUT().loadClass(FactoryExample.class.getCanonicalName());
GenericConstructor method = new GenericConstructor(sut.getConstructor(), sut);
DefaultTestCase test = new DefaultTestCase();
Properties.PRIMITIVE_REUSE_PROBABILITY = 0.0;
Properties.OBJECT_REUSE_PROBABILITY = 0.0;
testFactory.addConstructor(test, method, 0, 0);
testFactory.reset();
assertEquals(1, test.size());
testFactory.addConstructor(test, method, 0, 0);
assertEquals(2, test.size());
String code = test.toCode();
System.out.println(code);
assertTrue(code.contains("factoryExample0"));
assertTrue(code.contains("factoryExample1"));
}
Aggregations