package org.pitest.mutationtest;
import static org.assertj.core.api.Assertions.assertThat;
import static org.pitest.mutationtest.LocationMother.aMutationId;
import static org.pitest.mutationtest.engine.MutationDetailsMother.aMutationDetail;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import nl.jqno.equalsverifier.EqualsVerifier;
import org.junit.Test;
import org.pitest.classinfo.ClassName;
import org.pitest.mutationtest.engine.Location;
import org.pitest.mutationtest.engine.MethodName;
import org.pitest.mutationtest.engine.MutationDetails;
public class MutationMetaDataTest {
@Test
public void shouldPartitionResultsByMutatedClass() {
MutationResult a = makeResult("Foo", "a");
MutationResult b = makeResult("Bar", "a");
MutationResult c = makeResult("Foo", "b");
MutationResult d = makeResult("Foo", "c");
MutationMetaData testee = new MutationMetaData(Arrays.asList(a, b, c, d));
Collection<ClassMutationResults> actual = testee.toClassResults();
assertThat(actual).hasSize(2);
Iterator<ClassMutationResults> it = actual.iterator();
ClassMutationResults first = it.next();
ClassMutationResults second = it.next();
assertThat(first.getMutatedClass()).isEqualTo(ClassName.fromString("Bar"));
assertThat(first.getMutations()).hasSize(1);
assertThat(second.getMutatedClass()).isEqualTo(ClassName.fromString("Foo"));
assertThat(second.getMutations()).hasSize(3);
}
@Test
public void shouldNotCreateEmptyClassResultsObjects() {
MutationMetaData testee = new MutationMetaData(
Collections.<MutationResult> emptyList());
assertThat(testee.toClassResults()).isEmpty();
}
@Test
public void shouldObeyHashcodeEqualsContract() {
EqualsVerifier.forClass(MutationMetaData.class).verify();
}
private MutationResult makeResult(String clazz, String method) {
Location location = Location.location(ClassName.fromString(clazz),
MethodName.fromString(method), "()V");
MutationDetails md = aMutationDetail().withId(
aMutationId().withLocation(location)).build();
final MutationResult mr = new MutationResult(md,
new MutationStatusTestPair(0, DetectionStatus.KILLED));
return mr;
}
}