View Javadoc
1 package test.net.sourceforge.pmd.renderers; 2 3 import junit.framework.TestCase; 4 import net.sourceforge.pmd.Report; 5 import net.sourceforge.pmd.RuleContext; 6 import net.sourceforge.pmd.RuleViolation; 7 import net.sourceforge.pmd.renderers.XMLRenderer; 8 import test.net.sourceforge.pmd.MockRule; 9 10 import java.util.ArrayList; 11 import java.util.Iterator; 12 import java.util.List; 13 14 public class XMLRendererTest extends TestCase { 15 private XMLRenderer IUT = null; 16 private MockRule RULE1 = new MockRule("RULE1", "RULE1", "msg"); 17 private MockRule RULE2 = new MockRule("RULE2", "RULE2", "msg"); 18 private RuleContext ctx = new RuleContext(); 19 20 public XMLRendererTest(String name) { 21 super(name); 22 } 23 24 public void setUp() { 25 IUT = new XMLRenderer(); 26 } 27 28 public void testEmptyReport() throws Throwable { 29 String rendered = IUT.render(new Report()); 30 assertTrue("Expected empty PMD tag.", rendered.indexOf("violation") < 0); 31 } 32 33 public void testSingleReport() throws Throwable { 34 Report report = new Report(); 35 ctx.setSourceCodeFilename("testSingleReport"); 36 report.addRuleViolation(new RuleViolation(RULE1, 1, "Rule1", ctx)); 37 38 String rendered = IUT.render(report); 39 40 // <?xml version="1.0"?> 41 // <pmd> 42 // <file name="testSingleReport"> 43 // <violation line="1" rule="RULE1"> 44 // Rule1 45 // </violation> 46 // </file> 47 // </pmd> 48 49 List expectedStrings = new ArrayList(); 50 expectedStrings.add("<pmd>"); 51 expectedStrings.add("<file name=\"testSingleReport\">"); 52 expectedStrings.add("<violation line=\"1\" rule=\"RULE1\">"); 53 expectedStrings.add("Rule1"); 54 expectedStrings.add("</violation>"); 55 expectedStrings.add("</file>"); 56 expectedStrings.add("</pmd>"); 57 58 verifyPositions(rendered, expectedStrings); 59 } 60 61 public void testDoubleReport() throws Throwable { 62 Report report = new Report(); 63 ctx.setSourceCodeFilename("testDoubleReport"); 64 report.addRuleViolation(new RuleViolation(RULE1, 1, "Rule1", ctx)); 65 66 report.addRuleViolation(new RuleViolation(RULE2, 2, "Rule2", ctx)); 67 68 String rendered = IUT.render(report); 69 70 // <?xml version="1.0"?> 71 // <pmd> 72 // <file name="testSingleReport"> 73 // <violation line="1" rule="RULE1"> 74 // Rule1 75 // </violation> 76 // <violation line="2" rule="RULE2"> 77 // Rule2 78 // </violation> 79 // </file> 80 // </pmd> 81 82 List expectedStrings = new ArrayList(); 83 expectedStrings.add("<pmd>"); 84 expectedStrings.add("<file name=\"testDoubleReport\">"); 85 expectedStrings.add("<violation line=\"1\" rule=\"RULE1\">"); 86 expectedStrings.add("Rule1"); 87 expectedStrings.add("</violation>"); 88 expectedStrings.add("<violation line=\"2\" rule=\"RULE2\">"); 89 expectedStrings.add("Rule2"); 90 expectedStrings.add("</violation>"); 91 expectedStrings.add("</file>"); 92 expectedStrings.add("</pmd>"); 93 94 verifyPositions(rendered, expectedStrings); 95 } 96 97 public void testTwoFiles() throws Throwable { 98 Report report = new Report(); 99 ctx.setSourceCodeFilename("testTwoFiles_0"); 100 report.addRuleViolation(new RuleViolation(RULE1, 1, "Rule1", ctx)); 101 102 ctx.setSourceCodeFilename("testTwoFiles_1"); 103 report.addRuleViolation(new RuleViolation(RULE1, 1, "Rule1", ctx)); 104 105 String rendered = IUT.render(report); 106 107 // <?xml version="1.0"?> 108 // <pmd> 109 // <file name="testTwoFiles_0"> 110 // <violation line="1" rule="RULE1"> 111 // Rule1 112 // </violation> 113 // </file> 114 // <file name="testTwoFiles_1"> 115 // <violation line="1" rule="RULE1"> 116 // Rule1 117 // </violation> 118 // </file> 119 // </pmd> 120 121 List expectedStrings = new ArrayList(); 122 expectedStrings.add("<pmd>"); 123 expectedStrings.add("<file name=\"testTwoFiles_0\">"); 124 expectedStrings.add("<violation line=\"1\" rule=\"RULE1\">"); 125 expectedStrings.add("Rule1"); 126 expectedStrings.add("</violation>"); 127 expectedStrings.add("</file>"); 128 expectedStrings.add("<file name=\"testTwoFiles_1\">"); 129 expectedStrings.add("<violation line=\"1\" rule=\"RULE1\">"); 130 expectedStrings.add("Rule1"); 131 expectedStrings.add("</violation>"); 132 expectedStrings.add("</file>"); 133 expectedStrings.add("</pmd>"); 134 135 verifyPositions(rendered, expectedStrings); 136 } 137 138 public void testUnorderedFiles() throws Throwable { 139 Report report = new Report(); 140 ctx.setSourceCodeFilename("testTwoFiles_0"); 141 report.addRuleViolation(new RuleViolation(RULE1, 1, "Rule1", ctx)); 142 143 ctx.setSourceCodeFilename("testTwoFiles_1"); 144 report.addRuleViolation(new RuleViolation(RULE1, 1, "Rule1", ctx)); 145 146 ctx.setSourceCodeFilename("testTwoFiles_0"); 147 report.addRuleViolation(new RuleViolation(RULE2, 2, "Rule2", ctx)); 148 149 String rendered = IUT.render(report); 150 151 // <?xml version="1.0"?> 152 // <pmd> 153 // <file name="testTwoFiles_0"> 154 // <violation line="1" rule="RULE1"> 155 // Rule1 156 // </violation> 157 // </file> 158 // <file name="testTwoFiles_1"> 159 // <violation line="1" rule="RULE1"> 160 // Rule1 161 // </violation> 162 // </file> 163 // </pmd> 164 165 List expectedStrings = new ArrayList(); 166 expectedStrings.add("<pmd>"); 167 expectedStrings.add("<file name=\"testTwoFiles_0\">"); 168 expectedStrings.add("<violation line=\"1\" rule=\"RULE1\">"); 169 expectedStrings.add("Rule1"); 170 expectedStrings.add("</violation>"); 171 expectedStrings.add("<violation line=\"2\" rule=\"RULE2\">"); 172 expectedStrings.add("Rule2"); 173 expectedStrings.add("</violation>"); 174 expectedStrings.add("</file>"); 175 expectedStrings.add("<file name=\"testTwoFiles_1\">"); 176 expectedStrings.add("<violation line=\"1\" rule=\"RULE1\">"); 177 expectedStrings.add("Rule1"); 178 expectedStrings.add("</violation>"); 179 expectedStrings.add("</file>"); 180 expectedStrings.add("</pmd>"); 181 182 verifyPositions(rendered, expectedStrings); 183 } 184 185 public void verifyPositions(String rendered, List strings) { 186 Iterator i = strings.iterator(); 187 int currPos = 0; 188 String lastString = "<?xml version=\"1.0\"?>"; 189 190 while (i.hasNext()) { 191 String str = (String) i.next(); 192 193 int strPos = rendered.indexOf(str, currPos); 194 assertTrue("Expecting: " + str + " after " + lastString, strPos > currPos); 195 currPos = strPos; 196 lastString = str; 197 } 198 } 199 }

This page was automatically generated by Maven