Search in sources :

Example 1 with DSpotState

use of eu.stamp_project.dspot.common.configuration.DSpotState in project dspot by STAMP-project.

the class AbstractSelectorRemoveOverlapTest method testRemoveOverlappingTests.

@Test
public void testRemoveOverlappingTests() {
    this.testSelectorUnderTest.init();
    DSpotState dspotState = new DSpotState();
    dspotState.setDelta(0.1f);
    dspotState.setTestFinder(new TestFinder(Collections.emptyList(), Collections.emptyList()));
    dspotState.setCompiler(compiler);
    dspotState.setTestSelector(this.testSelectorUnderTest);
    dspotState.setInputAmplDistributor(InputAmplDistributorEnum.RandomInputAmplDistributor.getInputAmplDistributor(200, Collections.singletonList(new StringLiteralAmplifier())));
    dspotState.setOutput(new Output(getPathToAbsoluteProjectRoot(), configuration.getOutputDirectory(), new NullCollector()));
    dspotState.setNbIteration(1);
    dspotState.setAutomaticBuilder(builder);
    dspotState.setTestCompiler(testCompiler);
    dspotState.setTestClassesToBeAmplified(Collections.singletonList(getTestClass()));
    dspotState.setAssertionGenerator(new AssertionGenerator(0.1f, compiler, testCompiler));
    DSpot dspot = new DSpot(dspotState);
    dspot.run();
    final File directory = new File(DSpotUtils.shouldAddSeparator.apply(this.configuration.getOutputDirectory()));
    if (!directory.exists()) {
        directory.mkdir();
    }
    assertEquals(getContentReportFile(), this.testSelectorUnderTest.report().output(this.getTestClass(), this.outputDirectory));
}
Also used : DSpot(eu.stamp_project.dspot.DSpot) InitializeDSpot(eu.stamp_project.dspot.common.configuration.InitializeDSpot) AssertionGenerator(eu.stamp_project.dspot.assertiongenerator.AssertionGenerator) Output(eu.stamp_project.dspot.common.report.output.Output) DSpotState(eu.stamp_project.dspot.common.configuration.DSpotState) TestFinder(eu.stamp_project.dspot.common.configuration.test_finder.TestFinder) StringLiteralAmplifier(eu.stamp_project.dspot.amplifier.amplifiers.StringLiteralAmplifier) File(java.io.File) NullCollector(eu.stamp_project.dspot.common.collector.NullCollector) Test(org.junit.Test)

Example 2 with DSpotState

use of eu.stamp_project.dspot.common.configuration.DSpotState 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);
}
Also used : RandomHelper(eu.stamp_project.dspot.amplifier.amplifiers.utils.RandomHelper) AutomaticBuilderEnum(eu.stamp_project.dspot.common.configuration.options.AutomaticBuilderEnum) Launcher(spoon.Launcher) DSpotCompiler(eu.stamp_project.dspot.common.compilation.DSpotCompiler) TestFramework(eu.stamp_project.dspot.common.test_framework.TestFramework) AssertionGeneratorUtils(eu.stamp_project.dspot.assertiongenerator.assertiongenerator.AssertionGeneratorUtils) InputAmplDistributorEnum(eu.stamp_project.dspot.common.configuration.options.InputAmplDistributorEnum) CtPackage(spoon.reflect.declaration.CtPackage) GsonBuilder(com.google.gson.GsonBuilder) DSpotUtils(eu.stamp_project.dspot.common.miscellaneous.DSpotUtils) Gson(com.google.gson.Gson) AutomaticBuilder(eu.stamp_project.dspot.common.automaticbuilder.AutomaticBuilder) InputAmplDistributor(eu.stamp_project.dspot.amplifier.InputAmplDistributor) UserInput(eu.stamp_project.dspot.common.configuration.UserInput) DSpotPOMCreator(eu.stamp_project.dspot.common.automaticbuilder.maven.DSpotPOMCreator) AssertionGenerator(eu.stamp_project.dspot.assertiongenerator.AssertionGenerator) Before(org.junit.Before) ProjectTimeJSON(eu.stamp_project.dspot.common.report.output.json.ProjectTimeJSON) JacocoCoverageSelector(eu.stamp_project.dspot.selector.JacocoCoverageSelector) Assert.assertTrue(org.junit.Assert.assertTrue) FileUtils(org.apache.commons.io.FileUtils) Test(org.junit.Test) ValueCreator(eu.stamp_project.dspot.amplifier.amplifiers.value.ValueCreator) TestCompiler(eu.stamp_project.dspot.common.compilation.TestCompiler) DSpotState(eu.stamp_project.dspot.common.configuration.DSpotState) Factory(spoon.reflect.factory.Factory) CommentEnum(eu.stamp_project.dspot.common.configuration.options.CommentEnum) TestFinder(eu.stamp_project.dspot.common.configuration.test_finder.TestFinder) TestSelector(eu.stamp_project.dspot.selector.TestSelector) java.io(java.io) Output(eu.stamp_project.dspot.common.report.output.Output) CtClass(spoon.reflect.declaration.CtClass) AmplificationHelper(eu.stamp_project.dspot.common.miscellaneous.AmplificationHelper) DSpotCache(eu.stamp_project.dspot.common.configuration.DSpotCache) InitializeDSpot(eu.stamp_project.dspot.common.configuration.InitializeDSpot) Collections(java.util.Collections) Assert.assertEquals(org.junit.Assert.assertEquals) InputAmplDistributor(eu.stamp_project.dspot.amplifier.InputAmplDistributor) InitializeDSpot(eu.stamp_project.dspot.common.configuration.InitializeDSpot) AssertionGenerator(eu.stamp_project.dspot.assertiongenerator.AssertionGenerator) ProjectTimeJSON(eu.stamp_project.dspot.common.report.output.json.ProjectTimeJSON) DSpotState(eu.stamp_project.dspot.common.configuration.DSpotState) CtPackage(spoon.reflect.declaration.CtPackage) Test(org.junit.Test)

Example 3 with DSpotState

use of eu.stamp_project.dspot.common.configuration.DSpotState in project dspot by STAMP-project.

the class RecoveryDSpotTest method testThatDSpotCanRecoverFromError.

@Test
public void testThatDSpotCanRecoverFromError() throws Exception {
    /*
            We test here, with different mock, that DSpot can recover for errors, continue and terminate the amplification process.
         */
    final SelectorThatThrowsError selector = new SelectorThatThrowsError(builder, configuration);
    selector.setThrowsToAmplify(true);
    DSpotCompiler compiler = DSpotCompiler.createDSpotCompiler(configuration, "");
    final TestFinder testFinder = new TestFinder(Collections.emptyList(), Collections.emptyList());
    final CtClass<?> testClassToBeAmplified = findClass("fr.inria.amp.OneLiteralTest");
    final List<CtMethod<?>> testListToBeAmplified = testFinder.findTestMethods(testClassToBeAmplified, Collections.emptyList());
    DSpotState dspotState = new DSpotState();
    dspotState.setDelta(0.1f);
    dspotState.setCompiler(compiler);
    dspotState.setTestSelector(selector);
    dspotState.setInputAmplDistributor(new TextualDistanceInputAmplDistributor(200, Collections.emptyList()));
    dspotState.setNbIteration(1);
    dspotState.setTestCompiler(testCompiler);
    dspotState.setAssertionGenerator(new AssertionGenerator(0.1f, compiler, testCompiler));
    DSpot dspot = new DSpot(dspotState);
    dspot.fullAmplification(testClassToBeAmplified, testListToBeAmplified, Collections.emptyList(), 1);
    assertEquals(2, DSpotState.GLOBAL_REPORT.getErrors().size());
    assertSame(ErrorEnum.ERROR_PRE_SELECTION, DSpotState.GLOBAL_REPORT.getErrors().get(0).type);
    DSpotState.GLOBAL_REPORT.reset();
    selector.setThrowsToAmplify(false);
    selector.setThrowsToKeep(true);
    dspot.fullAmplification(testClassToBeAmplified, testListToBeAmplified, Collections.emptyList(), 1);
    assertEquals(2, DSpotState.GLOBAL_REPORT.getErrors().size());
    assertSame(ErrorEnum.ERROR_SELECTION, DSpotState.GLOBAL_REPORT.getErrors().get(0).type);
    DSpotState.GLOBAL_REPORT.reset();
    final List<Amplifier> amplifiers = Collections.singletonList(new AmplifierThatThrowsError());
    dspotState.setTestSelector(new TakeAllSelector(this.builder, this.configuration));
    dspotState.setInputAmplDistributor(new TextualDistanceInputAmplDistributor(200, amplifiers));
    dspot.fullAmplification(testClassToBeAmplified, testListToBeAmplified, Collections.emptyList(), 1);
    assertEquals(1, DSpotState.GLOBAL_REPORT.getErrors().size());
    assertSame(ErrorEnum.ERROR_INPUT_AMPLIFICATION, DSpotState.GLOBAL_REPORT.getErrors().get(0).type);
    DSpotState.GLOBAL_REPORT.reset();
    dspotState.setInputAmplDistributor(new TextualDistanceInputAmplDistributor(200, Collections.emptyList()));
    dspotState.setAssertionGenerator(new AssertionGeneratorThatThrowsError(compiler));
    dspot.fullAmplification(testClassToBeAmplified, testListToBeAmplified, Collections.emptyList(), 1);
    assertEquals(1, DSpotState.GLOBAL_REPORT.getErrors().size());
    assertSame(ErrorEnum.ERROR_ASSERT_AMPLIFICATION, DSpotState.GLOBAL_REPORT.getErrors().get(0).type);
    DSpotState.GLOBAL_REPORT.reset();
}
Also used : AssertionGenerator(eu.stamp_project.dspot.assertiongenerator.AssertionGenerator) DSpotCompiler(eu.stamp_project.dspot.common.compilation.DSpotCompiler) DSpotState(eu.stamp_project.dspot.common.configuration.DSpotState) TextualDistanceInputAmplDistributor(eu.stamp_project.dspot.amplifier.TextualDistanceInputAmplDistributor) Amplifier(eu.stamp_project.dspot.amplifier.amplifiers.Amplifier) TakeAllSelector(eu.stamp_project.dspot.selector.TakeAllSelector) TestFinder(eu.stamp_project.dspot.common.configuration.test_finder.TestFinder) CtMethod(spoon.reflect.declaration.CtMethod) Test(org.junit.Test)

Aggregations

AssertionGenerator (eu.stamp_project.dspot.assertiongenerator.AssertionGenerator)3 DSpotState (eu.stamp_project.dspot.common.configuration.DSpotState)3 TestFinder (eu.stamp_project.dspot.common.configuration.test_finder.TestFinder)3 Test (org.junit.Test)3 DSpotCompiler (eu.stamp_project.dspot.common.compilation.DSpotCompiler)2 InitializeDSpot (eu.stamp_project.dspot.common.configuration.InitializeDSpot)2 Output (eu.stamp_project.dspot.common.report.output.Output)2 Gson (com.google.gson.Gson)1 GsonBuilder (com.google.gson.GsonBuilder)1 DSpot (eu.stamp_project.dspot.DSpot)1 InputAmplDistributor (eu.stamp_project.dspot.amplifier.InputAmplDistributor)1 TextualDistanceInputAmplDistributor (eu.stamp_project.dspot.amplifier.TextualDistanceInputAmplDistributor)1 Amplifier (eu.stamp_project.dspot.amplifier.amplifiers.Amplifier)1 StringLiteralAmplifier (eu.stamp_project.dspot.amplifier.amplifiers.StringLiteralAmplifier)1 RandomHelper (eu.stamp_project.dspot.amplifier.amplifiers.utils.RandomHelper)1 ValueCreator (eu.stamp_project.dspot.amplifier.amplifiers.value.ValueCreator)1 AssertionGeneratorUtils (eu.stamp_project.dspot.assertiongenerator.assertiongenerator.AssertionGeneratorUtils)1 AutomaticBuilder (eu.stamp_project.dspot.common.automaticbuilder.AutomaticBuilder)1 DSpotPOMCreator (eu.stamp_project.dspot.common.automaticbuilder.maven.DSpotPOMCreator)1 NullCollector (eu.stamp_project.dspot.common.collector.NullCollector)1