package hudson.plugins.violations.types.stylecop; import static org.junit.Assert.*; import hudson.plugins.violations.model.FullBuildModel; import hudson.plugins.violations.model.Violation; import hudson.plugins.violations.types.stylecop.StyleCopParser; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; import java.util.Iterator; import org.junit.Test; public class StyleCopParserTest { private FullBuildModel getFullBuildModel(String filename) throws IOException { URL url = getClass().getResource(filename); File xmlFile; try { xmlFile = new File(url.toURI()); } catch(URISyntaxException e) { xmlFile = new File(url.getPath()); } StyleCopParser parser = new StyleCopParser(); FullBuildModel model = new FullBuildModel(); parser.parse(model, xmlFile.getParentFile(), xmlFile.getName(), null); model.cleanup(); return model; } @Test public void testParseFullBuildModelFileStringStringArray() throws Exception { FullBuildModel model = getFullBuildModel("onefile.xml"); assertEquals("Number of violations is incorrect", 3, model.getCountNumber(StyleCopParser.TYPE_NAME)); assertEquals("Number of files is incorrect", 1, model.getFileModelMap().size()); } @Test public void testParseViolationData() throws Exception { FullBuildModel model = getFullBuildModel("onefile.xml"); Iterator<Violation> iterator = model.getFileModel("MainClass.cs").getTypeMap().get(StyleCopParser.TYPE_NAME).descendingIterator(); Violation v = iterator.next(); assertEquals("Line in violation is incorrect", 10, v.getLine()); assertEquals("Source in violation is incorrect", "DocumentationRules", v.getSource()); assertEquals("Message in violation is incorrect", "The property must have a documentation header. (SA1600)", v.getMessage()); assertEquals("Severity level in violation is incorrect", 2, v.getSeverityLevel()); assertEquals("Severity in violation is incorrect", "Medium", v.getSeverity()); } /** * Test to catch a NPE in Violation.compareTo() because violation has to little data */ @Test public void testViolationCompareTo() throws Exception { FullBuildModel model = getFullBuildModel("onefile.xml"); Iterator<Violation> iterator = model.getFileModel("MainClass.cs").getTypeMap().get(StyleCopParser.TYPE_NAME).descendingIterator(); Violation v = iterator.next(); Violation otherV = iterator.next(); assertTrue("compareTo() should return false", v.compareTo(otherV) != 0); } @Test public void assertParsingVersion43() throws Exception { FullBuildModel model = getFullBuildModel("stylecop-v4.3.xml"); assertEquals("Number of violations is incorrect", 2, model.getCountNumber(StyleCopParser.TYPE_NAME)); assertEquals("Number of files is incorrect", 1, model.getFileModelMap().size()); } }