View Javadoc
1 package test.net.sourceforge.pmd; 2 3 import junit.framework.TestCase; 4 import net.sourceforge.pmd.Rule; 5 import net.sourceforge.pmd.RuleSet; 6 import net.sourceforge.pmd.RuleSetFactory; 7 import net.sourceforge.pmd.RuleSetNotFoundException; 8 9 import java.io.ByteArrayInputStream; 10 import java.util.HashSet; 11 import java.util.Iterator; 12 import java.util.Set; 13 14 public class RuleSetFactoryTest extends TestCase { 15 16 private static final String EOL = System.getProperty("line.separator", "\n"); 17 18 private static final String EMPTY_RULE_SET = 19 "<?xml version=\"1.0\"?>" + EOL + 20 "<ruleset name=\"test\">" + EOL + 21 "<description>testdesc</description>" + EOL + 22 "</ruleset>"; 23 24 private static final String SINGLE_RULE_SET = 25 "<?xml version=\"1.0\"?>" + EOL + 26 "<ruleset name=\"test\">" + EOL + 27 "<description>" + EOL + 28 "testdesc" + EOL + 29 "</description>" + EOL + 30 "<rule " + EOL + 31 "name=\"MockRuleName\" " + EOL + 32 "message=\"avoid the mock rule\" " + EOL + 33 "class=\"test.net.sourceforge.pmd.MockRule\">" + 34 "</rule></ruleset>"; 35 36 private static final String MULTIPLE_RULE_SET = 37 "<?xml version=\"1.0\"?>" + EOL + 38 "<ruleset name=\"test\">" + EOL + 39 "<description>" + EOL + 40 "testdesc" + EOL + "</description>" + EOL + 41 "<rule name=\"MockRuleName1\" " + EOL + 42 "message=\"avoid the mock rule\" " + EOL + 43 "class=\"test.net.sourceforge.pmd.MockRule\">" + EOL + 44 "</rule>" + EOL + 45 "<rule name=\"MockRuleName2\" " + EOL + 46 "message=\"avoid the mock rule\" " + EOL + 47 "class=\"test.net.sourceforge.pmd.MockRule\">" + EOL + 48 "</rule></ruleset>"; 49 50 private static final String RULE_WITH_PROPERTIES = 51 "<?xml version=\"1.0\"?>" + EOL + 52 "<ruleset name=\"test\">" + EOL + 53 "<description>" + EOL + 54 "testdesc" + EOL + 55 "</description>" + EOL + 56 "<rule name=\"MockRuleName\" " + EOL + 57 "message=\"avoid the mock rule\" " + EOL + 58 "class=\"test.net.sourceforge.pmd.MockRule\">" + EOL + 59 "<description>" + EOL + "testdesc2" + EOL + 60 "</description>" + EOL + 61 "<properties>" + EOL + 62 "<property name=\"fooBoolean\" value=\"true\"/>" + EOL + 63 "<property name=\"fooDouble\" value=\"1.0\" />" + EOL + 64 "<property name=\"foo\" value=\"bar\"/>" + EOL + 65 "<property name=\"fooint\" value=\"2\"/>" + EOL + 66 "</properties>" + EOL + 67 "</rule></ruleset>"; 68 69 private static final String RULE_WITH_XPATH = 70 "<?xml version=\"1.0\"?>" + EOL + 71 "<ruleset name=\"test\">" + EOL + 72 "<description>" + EOL + 73 "testdesc" + EOL + 74 "</description>" + EOL + 75 "<priority>3</priority>" + EOL + 76 "<rule name=\"MockRuleName\" " + EOL + 77 "message=\"avoid the mock rule\" " + EOL + 78 "class=\"test.net.sourceforge.pmd.MockRule\">" + EOL + 79 "<description>" + EOL + 80 "testdesc2" + EOL + 81 "</description>" + EOL + 82 "<properties>" + EOL + 83 "<property name=\"xpath\">" + EOL + 84 "<value>" + EOL + 85 "<![CDATA[ //Block ]]>" + EOL + 86 "</value>" + EOL + 87 "</property>" + EOL + 88 "</properties>" + EOL + 89 "</rule></ruleset>"; 90 91 92 private static final String SINGLE_RULE_SET_WITH_PRIORITY = 93 "<?xml version=\"1.0\"?>" + EOL + 94 "<ruleset name=\"test\">" + EOL + 95 "<description>" + EOL + 96 "testdesc" + EOL + 97 "</description>" + EOL + 98 "<rule " + EOL + 99 "name=\"MockRuleName\" " + EOL + 100 "message=\"avoid the mock rule\" " + EOL + 101 "class=\"test.net.sourceforge.pmd.MockRule\">" + 102 "<priority>3</priority>" + EOL + 103 "</rule></ruleset>"; 104 105 public void testSingleRuleWithPriority() { 106 RuleSetFactory rsf = new RuleSetFactory(); 107 RuleSet rs = rsf.createRuleSet(new ByteArrayInputStream(SINGLE_RULE_SET_WITH_PRIORITY.getBytes())); 108 Rule r = (Rule)rs.getRules().iterator().next(); 109 assertEquals(3, r.getPriority()); 110 } 111 112 public void testRuleSetNotFound() { 113 RuleSetFactory rsf = new RuleSetFactory(); 114 try { 115 rsf.createRuleSet("fooooo"); 116 throw new RuntimeException("Should have thrown a RuleSetNotFoundException"); 117 } catch (RuleSetNotFoundException rsnfe) { 118 // cool 119 } 120 } 121 122 public void testCreateEmptyRuleSet() { 123 RuleSetFactory rsf = new RuleSetFactory(); 124 RuleSet rs = rsf.createRuleSet(new ByteArrayInputStream(EMPTY_RULE_SET.getBytes())); 125 assertEquals("test", rs.getName()); 126 assertEquals(0, rs.size()); 127 } 128 129 public void testSingleRule() { 130 RuleSetFactory rsf = new RuleSetFactory(); 131 RuleSet rs = rsf.createRuleSet(new ByteArrayInputStream(SINGLE_RULE_SET.getBytes())); 132 assertEquals(1, rs.size()); 133 Rule r = (Rule)rs.getRules().iterator().next(); 134 assertEquals("MockRuleName", r.getName()); 135 assertEquals("avoid the mock rule", r.getMessage()); 136 } 137 138 public void testMultipleRules() { 139 RuleSetFactory rsf = new RuleSetFactory(); 140 RuleSet rs = rsf.createRuleSet(new ByteArrayInputStream(MULTIPLE_RULE_SET.getBytes())); 141 assertEquals(2, rs.size()); 142 Set expected = new HashSet(); 143 expected.add("MockRuleName1"); 144 expected.add("MockRuleName2"); 145 for (Iterator i = rs.getRules().iterator(); i.hasNext();) { 146 assertTrue(expected.contains(((Rule) i.next()).getName())); 147 } 148 } 149 150 public void testProps() { 151 RuleSetFactory rsf = new RuleSetFactory(); 152 RuleSet rs = rsf.createRuleSet(new ByteArrayInputStream(RULE_WITH_PROPERTIES.getBytes())); 153 Rule r = (Rule) rs.getRules().iterator().next(); 154 assertTrue(r.hasProperty("foo")); 155 assertEquals("bar", r.getStringProperty("foo")); 156 assertEquals(2, r.getIntProperty("fooint")); 157 assertTrue(r.hasProperty("fooBoolean")); 158 assertTrue(r.getBooleanProperty("fooBoolean")); 159 assertTrue(r.hasProperty("fooDouble")); 160 assertEquals(1.0, r.getDoubleProperty("fooDouble"), 0.05); 161 assertTrue(!r.hasProperty("BuggleFish")); 162 assertTrue(r.getDescription().indexOf("testdesc2") != -1); 163 } 164 165 public void testXPath() { 166 RuleSetFactory rsf = new RuleSetFactory(); 167 RuleSet rs = rsf.createRuleSet(new ByteArrayInputStream(RULE_WITH_XPATH.getBytes())); 168 Rule r = (Rule) rs.getRules().iterator().next(); 169 assertTrue(r.hasProperty("xpath")); 170 assertEquals(" //Block ", r.getStringProperty("xpath")); 171 } 172 173 /* 174 public void testExternalReferences() { 175 RuleSetFactory rsf = new RuleSetFactory(); 176 RuleSet rs = rsf.createRuleSet(new ByteArrayInputStream(EXTERNAL_REFERENCE_RULE_SET.getBytes())); 177 assertEquals(1, rs.size()); 178 } 179 private static final String EXTERNAL_REFERENCE_RULE_SET = "<?xml version=\"1.0\"?>" + 180 "<ruleset name=\"test\">\r\n<description>testdesc</description><rule ref=\"rulesets/basic.xml/EmptyCatchBlock\"/></ruleset>"; 181 private static final String SINGLE_RULE_NO_PROPS = "<?xml version=\"1.0\"?>" + 182 "<ruleset name=\"test\">\r\n<description>testdesc</description>" + 183 "<rule name=\"MockRuleName\" message=\"avoid the mock rule\" class=\"test.net.sourceforge.pmd.MockRule\">" + 184 "<properties></properties>" + 185 "</rule></ruleset>"; 186 */ 187 }

This page was automatically generated by Maven