package org.jvnet.hudson.plugins.purecoverage.parser;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import org.junit.Test;
import org.jvnet.hudson.plugins.purecoverage.domain.LineCoverageMetric;
import org.jvnet.hudson.plugins.purecoverage.domain.ProjectCoverage;
import org.jvnet.hudson.plugins.purecoverage.parser.PureCoverageParser;
import org.jvnet.hudson.plugins.purecoverage.util.UrlTransformer;
public class PureCoverageParserTest extends ParserTestBase {
@Test
public void shouldNotHaveNANs() {
PureCoverageParser parser = new PureCoverageParser();
ProjectCoverage c = parser.parse(read("simple.export"));
LineCoverageMetric dir = c.getChild(uniqueUrl("noCoverageDirectory"));
assertTotalLines(dir, 0);
assertCoveredLines(dir, 0);
assertEquals("0.0% (0/0)", dir.getLineCoverage().toString());
}
@Test
public void shouldParseSimpleReport() {
PureCoverageParser parser = new PureCoverageParser();
ProjectCoverage c = parser.parse(read("simple.export"));
assertTotalLines(c, 154530);
assertCoveredLines(c, 154530 - 131726);
//first dir
LineCoverageMetric dir = c.getChild(uniqueUrl("/vobs/ehtl/IDL/src/"));
assertTotalLines(dir, 41776);
assertCoveredLines(dir, 41776 - 41687);
//last dir
dir = c.getChild(uniqueUrl("/vobs/Meridian/IDL/source/"));
//first file
LineCoverageMetric file = dir.getChild(uniqueUrl("OSMloadBalancerStub.cpp"));
assertTotalLines(file, 4586);
assertCoveredLines(file, 4586 - 4314);
//last file
file = dir.getChild(uniqueUrl("eHotels_c.hh"));
assertTotalLines(file, 3146);
assertCoveredLines(file, 3146 - 3146);
//first function
LineCoverageMetric function = file.getChild(uniqueUrl("eHotels::var&eHotels<Foo>::operator=(Type*)"));
assertTotalLines(function, 4);
assertCoveredLines(function, 4 - 2);
//last function
assertNotNull(file.getChild(uniqueUrl("fooFunction")));
}
private String uniqueUrl(String name) {
return new UrlTransformer().toUniqueUrl(name);
}
private void assertTotalLines(LineCoverageMetric c, int totalLines) {
assertEquals(totalLines, c.getLineCoverage().getTotalLines());
}
private void assertCoveredLines(LineCoverageMetric c, int coveredLines) {
assertEquals(coveredLines, c.getLineCoverage().getCoveredLines());
}
}