use of eu.stamp_project.dspot.amplifier.InputAmplDistributor in project dspot by STAMP-project.
the class ProjectJSONTest method test.
@Test
public void test() throws Exception {
final File file = new File(outputDirectory + "/sample.json");
if (file.exists()) {
file.delete();
}
final InputAmplDistributor inputAmplDistributor = InputAmplDistributorEnum.RandomInputAmplDistributor.getInputAmplDistributor(200, Collections.emptyList());
DSpotState dspotState = new DSpotState();
dspotState.setDelta(0.1f);
dspotState.setTestFinder(TestFinder.get());
dspotState.setCompiler(compiler);
dspotState.setTestSelector(testSelector);
dspotState.setInputAmplDistributor(inputAmplDistributor);
dspotState.setOutput(Output.get(configuration));
dspotState.setNbIteration(1);
dspotState.setAutomaticBuilder(builder);
dspotState.setTestCompiler(testCompiler);
dspotState.setTestClassesToBeAmplified(Collections.singletonList(findClass("fr.inria.amp.TestJavaPoet")));
dspotState.setAssertionGenerator(new AssertionGenerator(0.1f, compiler, testCompiler));
DSpot dspot = new DSpot(dspotState);
final CtClass<?> clone = findClass("fr.inria.amp.TestJavaPoet").clone();
dspot.run();
ProjectTimeJSON projectJson = getProjectJson(file);
assertTrue(projectJson.classTimes.stream().anyMatch(classTimeJSON -> "fr.inria.amp.TestJavaPoet".equals(classTimeJSON.fullQualifiedName)));
assertEquals(1, projectJson.classTimes.size());
assertEquals("sample", projectJson.projectName);
dspotState.setTestClassesToBeAmplified(Collections.singletonList(findClass("fr.inria.mutation.ClassUnderTestTest")));
dspot.run();
projectJson = getProjectJson(file);
assertTrue(projectJson.classTimes.stream().anyMatch(classTimeJSON -> classTimeJSON.fullQualifiedName.equals("fr.inria.amp.TestJavaPoet")));
assertTrue(projectJson.classTimes.stream().anyMatch(classTimeJSON -> classTimeJSON.fullQualifiedName.equals("fr.inria.mutation.ClassUnderTestTest")));
assertEquals(2, projectJson.classTimes.size());
assertEquals("sample", projectJson.projectName);
/* we reinitialize the factory to remove the amplified test class */
final CtClass<?> amplifiedClassToBeRemoved = findClass("fr.inria.amp.TestJavaPoet");
final CtPackage aPackage = amplifiedClassToBeRemoved.getPackage();
aPackage.removeType(amplifiedClassToBeRemoved);
aPackage.addType(clone);
dspotState.setTestClassesToBeAmplified(Collections.singletonList(findClass("fr.inria.amp.TestJavaPoet")));
dspot.run();
projectJson = getProjectJson(file);
assertTrue(projectJson.classTimes.stream().anyMatch(classTimeJSON -> classTimeJSON.fullQualifiedName.equals("fr.inria.amp.TestJavaPoet")));
assertTrue(projectJson.classTimes.stream().anyMatch(classTimeJSON -> classTimeJSON.fullQualifiedName.equals("fr.inria.mutation.ClassUnderTestTest")));
assertEquals(2, projectJson.classTimes.size());
assertEquals("sample", projectJson.projectName);
}
Aggregations