private Collection<MutationDetails> findMutants(ClassName clazz) { final MutationSource source = createSource(this.cbas); return source.createMutations(clazz); }
@Test public void shouldFilterMutationsToForLoopIncrements() { final Collection<MutationDetails> actual = findMutants(HasForLoop.class); this.data.setFeatures(Collections.singletonList("-FFLOOP")); final Collection<MutationDetails> actualWithoutFilter = findMutants(HasForLoop.class); assertThat(actual.size()).isLessThan(actualWithoutFilter.size()); }
MutationSource createSource(ClassByteArraySource source) { final SettingsFactory settings = new SettingsFactory(this.data, PluginServices.makeForContextLoader()); final MutationInterceptor interceptor = settings.getInterceptor() .createInterceptor(this.data, source); final MutationEngine engine = new GregorEngineFactory().createEngine( EngineArguments.arguments().withExcludedMethods(this.data.getExcludedMethods()) .withMutators(this.data.getMutators())); final MutationConfig config = new MutationConfig(engine, null); return new MutationSource(config, noTestPrioritisation(), source, interceptor); }
@Test public void shouldFilterMutationsToForEachLoops() { final Collection<MutationDetails> actual = findMutants(HasForEachLoop.class); this.data.setFeatures(Collections.singletonList("-FFEACH")); final Collection<MutationDetails> actualWithoutFilter = findMutants(HasForEachLoop.class); assertThat(actual.size()).isLessThan(actualWithoutFilter.size()); }
@Test public void shouldFilterImplicitNullChecksInLambdas() { final ClassName clazz = ClassName.fromString("implicitnullcheck/RemovedCallBug_javac"); this.data.setMutators(Collections.singletonList("ALL")); final Collection<MutationDetails> foundByDefault = findMutants(clazz); this.data.setFeatures(Collections.singletonList("-FINULL")); final Collection<MutationDetails> foundWhenDisabled = findMutants(clazz); assertThat(foundWhenDisabled.size()).isGreaterThan(foundByDefault.size()); }
@Test public void shouldNotMutateMethodsAnnotatedWithGenerated() { final Collection<MutationDetails> actualDetails = findMutants(AnnotatedToAvoidMethod.class); // all but two methods are annotated to ignore assertEquals(2, actualDetails.size()); }
@Test public void shouldNotFilterInlinedFinallyBlocksWhenFlagNotSet() { final ClassName clazz = ClassName.fromString("trywithresources/TryCatchFinallyExample_javac"); this.data.setDetectInlinedCode(true); final Collection<MutationDetails> filtered = findMutants(clazz); this.data.setDetectInlinedCode(false); final Collection<MutationDetails> unfiltered = findMutants(clazz); assertThat(filtered.size()).isLessThan(unfiltered.size()); }
@Test public void shouldFilterMutationsInLoggingCalls() { this.data.setLoggingClasses(Collections.singleton("java.util.logging")); final Collection<MutationDetails> actual = findMutants(HasLogger.class); assertThat(actual).isEmpty(); }
@Test public void filtersEquivalentReturnValsMutants() { this.data.setMutators(Collections.singletonList("PRIMITIVE_RETURNS")); final Collection<MutationDetails> actual = findMutants(AlreadyReturnsConstZero.class); assertThat(actual).isEmpty(); }
private Collection<MutationDetails> findMutants(Class<?> clazz) { this.data.setTargetClasses(Collections.singleton(clazz.getName())); this.cbas = ClassloaderByteArraySource.fromContext(); return findMutants(ClassName.fromClass(clazz)); }
@Test public void shouldFilterMutantsInTryWithResourcesClosableCompiledWithEcj() { final ClassName clazz = ClassName.fromString("trywithresources/TryWithTwoCloseableExample_ecj"); final Collection<MutationDetails> actual = findMutants(clazz); assertThat(actual).hasSize(1); }
@Test public void shouldFilterMutantsInTryWithResourcesClosableCompiledWithJavac() { final ClassName clazz = ClassName.fromString("trywithresources/TryWithTwoCloseableExample_javac"); final Collection<MutationDetails> actual = findMutants(clazz); assertThat(actual).hasSize(1); }
@Test public void shouldFilterMutantsInTryWithResourcesClosableCompiledWithApectj() { final ClassName clazz = ClassName.fromString("trywithresources/TryWithTwoCloseableExample_aspectj"); final Collection<MutationDetails> actual = findMutants(clazz); assertThat(actual).hasSize(1); }
@Test public void shouldFilterMutantsInTryCatchFinallyCompiledWithAspectJ() { this.data.setDetectInlinedCode(true); final ClassName clazz = ClassName.fromString("trywithresources/TryCatchFinallyExample_aspectj"); final Collection<MutationDetails> actual = findMutants(clazz); assertThat(actual).hasSize(3); }
@Test public void shouldFilterMutantsInTryCatchFinallyCompiledWithEcj() { this.data.setDetectInlinedCode(true); final ClassName clazz = ClassName.fromString("trywithresources/TryCatchFinallyExample_ecj"); final Collection<MutationDetails> actual = findMutants(clazz); assertThat(actual).hasSize(3); }
@Test public void shouldFilterMutantsInTryFinallyCompiledWithJavaC() { this.data.setDetectInlinedCode(true); final ClassName clazz = ClassName.fromString("trywithresources/TryFinallyExample_javac"); final Collection<MutationDetails> actual = findMutants(clazz); assertThat(actual).hasSize(2); }
@Test public void shouldFilterMutantsInTryFinallyCompiledWithAspectJ() { this.data.setDetectInlinedCode(true); final ClassName clazz = ClassName.fromString("trywithresources/TryFinallyExample_aspectj"); final Collection<MutationDetails> actual = findMutants(clazz); assertThat(actual).hasSize(2); }
@Test public void shouldFilterMutantsInTryCatchFinallyCompiledWithJavaC() { this.data.setDetectInlinedCode(true); final ClassName clazz = ClassName.fromString("trywithresources/TryCatchFinallyExample_javac"); final Collection<MutationDetails> actual = findMutants(clazz); assertThat(actual).hasSize(3); }
@Test public void shouldFilterMutantsInTryFinallyCompiledWithEcj() { this.data.setDetectInlinedCode(true); final ClassName clazz = ClassName.fromString("trywithresources/TryFinallyExample_ecj"); final Collection<MutationDetails> actual = findMutants(clazz); assertThat(actual).hasSize(2); }