package org.pitest.mutationtest.build; import static org.assertj.core.api.Assertions.assertThat; import static org.pitest.mutationtest.LocationMother.aMutationId; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.pitest.classinfo.ClassName; import org.pitest.mutationtest.DetectionStatus; import org.pitest.mutationtest.MutationConfig; import org.pitest.mutationtest.MutationMetaData; import org.pitest.mutationtest.MutationResult; import org.pitest.mutationtest.MutationStatusTestPair; import org.pitest.mutationtest.TimeoutLengthStrategy; import org.pitest.mutationtest.engine.MutationDetails; import org.pitest.mutationtest.engine.MutationDetailsMother; import org.pitest.mutationtest.engine.MutationEngine; import org.pitest.process.JavaAgent; import org.pitest.process.LaunchOptions; import org.pitest.testapi.Configuration; public class MutationTestUnitTest { private MutationTestUnit testee; private List<MutationDetails> mutations; private Collection<ClassName> tests; @Mock private Configuration config; private MutationConfig mutationConfig; @Mock private TimeoutLengthStrategy timeout; @Mock private JavaAgent javaAgent; @Mock private MutationEngine engine; @Before public void setUp() { MockitoAnnotations.initMocks(this); this.mutationConfig = new MutationConfig(this.engine, new LaunchOptions( this.javaAgent)); this.mutations = new ArrayList<MutationDetails>(); this.tests = new ArrayList<ClassName>(); this.testee = new MutationTestUnit(this.mutations, this.tests, new WorkerFactory(null, this.config, this.mutationConfig, this.timeout, false, null)); } @Test public void shouldReportWhenMutationsNotCoveredByAnyTest() throws Exception { addMutation(); this.tests.add(new ClassName("foo")); MutationMetaData actual = this.testee.call(); final MutationResult expected = new MutationResult(this.mutations.get(0), new MutationStatusTestPair(0, DetectionStatus.NO_COVERAGE)); assertThat(actual.getMutations()).contains(expected); } @Test public void shouldReportPriorityBasedOnNumberOfMutations() { this.mutations.add(MutationDetailsMother.aMutationDetail().build()); this.testee = new MutationTestUnit(MutationDetailsMother.aMutationDetail() .build(42), this.tests, null); assertThat(this.testee.priority()).isEqualTo(42); } private void addMutation() { this.mutations.add(new MutationDetails(aMutationId().build(), null, null, 0, 0)); } }