package org.pitest.mutationtest.report.html;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import org.junit.Test;
import org.mockito.Mockito;
import org.pitest.classinfo.ClassInfo;
import org.pitest.mutationtest.MutationResult;
import org.pitest.mutationtest.report.html.MutationTestSummaryData;
public class MutationTestSummaryDataTest {
private MutationTestSummaryData testee;
private static final String FILE_NAME = "foo.java";
@Test
public void shouldReturnCorrectNumberOfFilesWhenAnalysedInOneUnit() {
final ClassInfo clazz = makeClass();
this.testee = buildSummaryData(clazz);
assertEquals(1, this.testee.getTotals().getNumberOfFiles());
}
@Test
public void shouldReturnCorrectNumberOfLinesWhenAnalysedInOneUnit() {
final int lines = 100;
final ClassInfo clazz = makeClass(lines);
this.testee = buildSummaryData(clazz);
assertEquals(lines, this.testee.getTotals().getNumberOfLines());
}
@Test
public void shouldReturnCorrectNumberOfCoveredLinesWhenAnalysedInOneUnit() {
final int linesCovered = 100;
final ClassInfo clazz = makeClass(200);
this.testee = buildSummaryData(clazz, linesCovered);
assertEquals(linesCovered, this.testee.getTotals()
.getNumberOfLinesCovered());
}
@Test
public void shouldReturnCorrectNumberOfFilesWhenOneClassAnalysedInTwoUnits() {
final ClassInfo clazz = makeClass();
this.testee = buildSummaryData(clazz);
final MutationTestSummaryData additonalDataForSameClass = buildSummaryData(clazz);
this.testee.add(additonalDataForSameClass);
assertEquals(1, this.testee.getTotals().getNumberOfFiles());
}
@Test
public void shouldReturnCorrectNumberOfLinesWhenAnalysedInTwoUnit() {
final int lines = 100;
final ClassInfo clazz = makeClass(lines);
this.testee = buildSummaryData(clazz);
final MutationTestSummaryData additonalDataForSameClass = buildSummaryData(clazz);
this.testee.add(additonalDataForSameClass);
assertEquals(lines, this.testee.getTotals().getNumberOfLines());
}
@Test
public void shouldReturnCorrectNumberOfCoveredLinesWhenAnalysedInTwoUnits() {
final int linesCovered = 100;
final ClassInfo clazz = makeClass(200);
this.testee = buildSummaryData(clazz, linesCovered);
final MutationTestSummaryData additonalDataForSameClass = buildSummaryData(
clazz, linesCovered);
this.testee.add(additonalDataForSameClass);
assertEquals(linesCovered, this.testee.getTotals()
.getNumberOfLinesCovered());
}
@Test
public void shouldReturnCorrectNumberOfLinesWhenCombiningResultsForDifferentClasses() {
this.testee = buildSummaryData(makeClass(100));
final MutationTestSummaryData addiitonalDataForSameClass = buildSummaryData(makeClass(200));
this.testee.add(addiitonalDataForSameClass);
assertEquals(100 + 200, this.testee.getTotals().getNumberOfLines());
}
@Test
public void shouldReturnCorrectNumberOfLinesCoveredWhenCombiningResultsForDifferentClasses() {
this.testee = buildSummaryData(makeClass(100), 300);
final MutationTestSummaryData addiitonalDataForSameClass = buildSummaryData(
makeClass(200), 100);
this.testee.add(addiitonalDataForSameClass);
assertEquals(300 + 100, this.testee.getTotals().getNumberOfLinesCovered());
}
private ClassInfo makeClass() {
return makeClass(100);
}
private ClassInfo makeClass(final int numberOfLines) {
final ClassInfo clazz = Mockito.mock(ClassInfo.class);
when(clazz.getNumberOfCodeLines()).thenReturn(numberOfLines);
return clazz;
}
private MutationTestSummaryData buildSummaryData(final ClassInfo clazz) {
return buildSummaryData(clazz, 0);
}
private MutationTestSummaryData buildSummaryData(final ClassInfo clazz,
final int linesCovered) {
final Collection<ClassInfo> classes = Arrays.asList(clazz);
final Collection<MutationResult> results = Collections.emptyList();
final Collection<String> mutators = Collections.emptyList();
return new MutationTestSummaryData(FILE_NAME, results, mutators, classes,
linesCovered);
}
}