package coverage;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
import org.junit.Test;
public class CoverageTest {
private static final Coverage EXMAPLE_COVERAGE = new Coverage();
private static final Collection<Interaction> EXAMPLE_COVERED_LINES = new TreeSet<>();
private static final String EXAMPLE_FILE_NAME = "test.java";
private static final Set<Interaction> EXAMPLE_COVERED_LINES_2 = new TreeSet<>();
private static final String EXAMPLE_FILE_NAME_2 = "test2.java";
static {
EXAMPLE_COVERED_LINES.add(new Interaction(1 , 0, "A"));
EXAMPLE_COVERED_LINES.add(new Interaction(4 , 0, "B"));
EXAMPLE_COVERED_LINES.add(new Interaction(15, 0, "C"));
for (int i = 100; i < 200; i++) {
EXAMPLE_COVERED_LINES.add(new Interaction(i, 1, "D"));
}
EXAMPLE_COVERED_LINES_2.add(new Interaction(6, 0, "E"));
EXAMPLE_COVERED_LINES_2.add(new Interaction(7, 0, "F"));
EXAMPLE_COVERED_LINES_2.add(new Interaction(8, 0, "G"));
EXMAPLE_COVERAGE.setType("TYPE");
EXMAPLE_COVERAGE.setBaseValue(1);
for (Interaction interaction : EXAMPLE_COVERED_LINES) {
EXMAPLE_COVERAGE.setLineCovered(EXAMPLE_FILE_NAME, interaction.getLine(), interaction.getInteraction(), interaction.getText());
}
for (Interaction interaction : EXAMPLE_COVERED_LINES_2) {
EXMAPLE_COVERAGE.setLineCovered(EXAMPLE_FILE_NAME_2, interaction.getLine(), interaction.getInteraction(), interaction.getText());
}
}
@Test
public void testCoverage() throws Exception {
Collection<Interaction> savedCoverage = EXMAPLE_COVERAGE.getCoverage(EXAMPLE_FILE_NAME);
assertTrue(setEquals(EXAMPLE_COVERED_LINES, savedCoverage));
Collection<Interaction> savedCoverage_2 = EXMAPLE_COVERAGE.getCoverage(EXAMPLE_FILE_NAME_2);
assertTrue(setEquals(EXAMPLE_COVERED_LINES_2, savedCoverage_2));
}
private boolean setEquals(Collection<Interaction> set1, Collection<Interaction> set2) {
return set1.containsAll(set2) && set2.containsAll(set1);
}
@Test
public void coverageEqualsTest() {
final String fileName = "test.java";
Set<Integer> coveredLines = new HashSet<>();
coveredLines.add(1);
coveredLines.add(4);
coveredLines.add(15);
Coverage coverage = new Coverage();
Coverage coverage2 = new Coverage();
for (int line : coveredLines) {
coverage.setLineCovered(fileName, line, 0, "A");
coverage2.setLineCovered(fileName, line, 0, "A");
}
assertEquals(coverage, coverage2);
coverage.setLineCovered("test2.java", 2, 0, "A");
assertNotEquals(coverage, coverage2);
coverage2.setLineCovered("test2.java", 2, 0, "A");
assertEquals(coverage, coverage2);
coverage2.setLineCovered("test2.java", 3, 0, "A");
assertNotEquals(coverage, coverage2);
}
@Test
public void testReaderWriter() throws Exception {
XMLWriter writer = new XMLWriter(EXMAPLE_COVERAGE);
final String content = writer.write();
XMLReader reader = new XMLReader();
final Coverage rwCoverage = reader.readXML(content);
assertEquals(EXMAPLE_COVERAGE, rwCoverage);
}
@Test
public void testIO() throws Exception {
File file = new File("coverage.xml");
XMLWriter writer = new XMLWriter(EXMAPLE_COVERAGE);
writer.writeToFile(file);
XMLReader reader = new XMLReader();
final Coverage rwCoverage = reader.readFromFile(file);
assertEquals(EXMAPLE_COVERAGE, rwCoverage);
assertEquals(EXMAPLE_COVERAGE.getType(), rwCoverage.getType());
assertEquals(EXMAPLE_COVERAGE.getBaseValue(), rwCoverage.getBaseValue());
}
@Test
public void testNullPointer() throws Exception {
assertTrue(EXMAPLE_COVERAGE.getCoverage("NO FILE").isEmpty());
}
@Test
public void overrideTest() throws Exception {
Coverage coverage = new Coverage();
coverage.setLineCovered(EXAMPLE_FILE_NAME, 0, 0, "TRUE");
for (Interaction element: coverage.getCoverage(EXAMPLE_FILE_NAME)) {
assertEquals(element, new Interaction(0, 0, "TRUE"));
}
coverage.setLineCovered(EXAMPLE_FILE_NAME, 0, 1, "A");
for (Interaction element: coverage.getCoverage(EXAMPLE_FILE_NAME)) {
assertEquals(element, new Interaction(0, 1, "A"));
}
coverage.setLineCovered(EXAMPLE_FILE_NAME, 0, 0, "TRUE");
for (Interaction element: coverage.getCoverage(EXAMPLE_FILE_NAME)) {
assertEquals(element, new Interaction(0, 1, "A"));
}
}
@Test
public void stringtest() throws Exception {
String a = "a";
String b = "a";
System.out.println(a == b);
String a1 = ("b" + a);
String b1 = ("b" + b);
System.out.println(a1 == b1);
a1 = a1.intern();
b1 = b1.intern();
System.out.println(a1 == b1);
}
}