private Collection<TestInfo> pickTests(MutationDetails mutation) { if (!mutation.isInStaticInitializer()) { return this.coverage.getTestsForClassLine(mutation.getClassLine()); } else { LOG.warning("Using untargetted tests"); return this.coverage.getTestsForClass(mutation.getClassName()); } }
private boolean killingTestHasNotChanged(final MutationDetails each, final MutationStatusTestPair mutationStatusTestPair) { final Collection<TestInfo> allTests = this.coverage.getTestsForClass(each .getClassName()); final List<ClassName> testClasses = allTests.stream() .filter(testIsCalled(mutationStatusTestPair.getKillingTest().get())) .map(TestInfo.toDefiningClassName()) .collect(Collectors.toList()); if (testClasses.isEmpty()) { return false; } return !this.history.hasClassChanged(testClasses.get(0)); }
private Set<ClassName> getAllClassesAndTests( final CoverageDatabase coverageData) { final Set<ClassName> names = new HashSet<>(); for (final ClassName each : this.code.getCodeUnderTestNames()) { names.add(each); FCollection.mapTo(coverageData.getTestsForClass(each), TestInfo.toDefiningClassName(), names); } return names; }
@Test public void shouldStartPreviousKilledMutationsAtAStatusOfNotStartedWhenNeitherClassOrTestHasChanged() { final MutationDetails md = makeMutation("foo"); final String killingTest = "fooTest"; setHistoryForAllMutationsTo(DetectionStatus.KILLED, killingTest); final Collection<TestInfo> tests = Collections.singleton(new TestInfo( "TEST_CLASS", killingTest, 0, Optional.<ClassName> empty(), 0)); when(this.coverage.getTestsForClass(any(ClassName.class))) .thenReturn(tests); when(this.history.hasClassChanged(any(ClassName.class))).thenReturn(false); final MutationResult actual = this.testee .analyse(Collections.singletonList(md)).iterator().next(); assertEquals(DetectionStatus.KILLED, actual.getStatus()); assertEquals(Optional.ofNullable(killingTest), actual.getKillingTest()); }
@Test public void shouldStartPreviousKilledMutationsAtAStatusOfKilledWhenNeitherClassOrTestHasChanged() { final MutationDetails md = makeMutation("foo"); final String killingTest = "fooTest"; setHistoryForAllMutationsTo(DetectionStatus.KILLED, killingTest); final Collection<TestInfo> tests = Collections.singleton(new TestInfo( "TEST_CLASS", killingTest, 0, Optional.<ClassName> empty(), 0)); when(this.coverage.getTestsForClass(any(ClassName.class))) .thenReturn(tests); when(this.history.hasClassChanged(ClassName.fromString("foo"))).thenReturn( false); when(this.history.hasClassChanged(ClassName.fromString("TEST_CLASS"))) .thenReturn(true); final MutationResult actual = this.testee .analyse(Collections.singletonList(md)).iterator().next(); assertEquals(DetectionStatus.NOT_STARTED, actual.getStatus()); }
@Test public void shouldAssignAllTestsForClassWhenMutationInStaticInitialiser() { final List<TestInfo> expected = makeTestInfos(0); when(this.coverage.getTestsForClass(this.foo)).thenReturn(expected); final List<TestInfo> actual = this.testee .assignTests(makeMutation("<clinit>") .withPoisonStatus(PoisonStatus.IS_STATIC_INITIALIZER_CODE)); assertEquals(expected, actual); }