View Javadoc
1 package test.net.sourceforge.pmd; 2 3 import junit.framework.TestCase; 4 import net.sourceforge.pmd.Report; 5 import net.sourceforge.pmd.RuleContext; 6 import net.sourceforge.pmd.RuleSet; 7 import net.sourceforge.pmd.RuleViolation; 8 import net.sourceforge.pmd.ast.JavaParser; 9 10 import java.io.StringReader; 11 import java.util.ArrayList; 12 import java.util.Collections; 13 import java.util.HashSet; 14 import java.util.Iterator; 15 import java.util.List; 16 import java.util.Random; 17 import java.util.Set; 18 19 public class RuleSetTest extends TestCase { 20 private String javaCode = "public class Test { }"; 21 22 public void testConstructor() { 23 new RuleSet(); 24 } 25 26 public void testAccessors() { 27 RuleSet rs = new RuleSet(); 28 rs.setName("foo"); 29 assertEquals("name mismatch", "foo", rs.getName()); 30 rs.setDescription("bar"); 31 assertEquals("description mismatch", "bar", rs.getDescription()); 32 } 33 34 public void testGetRuleByName() { 35 RuleSet rs = new RuleSet(); 36 MockRule mock = new MockRule("name", "desc", "msg"); 37 rs.addRule(mock); 38 assertEquals("unable to fetch rule by name", mock, rs.getRuleByName("name")); 39 } 40 41 public void testRuleList() { 42 RuleSet IUT = new RuleSet(); 43 44 assertEquals("Size of RuleSet isn't zero.", 0, IUT.size()); 45 46 MockRule rule = new MockRule("name", "desc", "msg"); 47 IUT.addRule(rule); 48 49 assertEquals("Size of RuleSet isn't one.", 1, IUT.size()); 50 51 Set rules = IUT.getRules(); 52 53 Iterator i = rules.iterator(); 54 assertTrue("Empty Set", i.hasNext()); 55 assertEquals("Returned set of wrong size.", 1, rules.size()); 56 assertEquals("Rule isn't in ruleset.", rule, i.next()); 57 } 58 59 public void testAddRuleSet() { 60 RuleSet set1 = new RuleSet(); 61 set1.addRule(new MockRule("name", "desc", "msg")); 62 RuleSet set2 = new RuleSet(); 63 set2.addRule(new MockRule("name", "desc", "msg")); 64 set1.addRuleSet(set2); 65 assertEquals("ruleset size wrong", 2, set1.size()); 66 } 67 68 public void testApply0Rules() throws Throwable { 69 RuleSet IUT = new RuleSet(); 70 verifyRuleSet(IUT, 0, new HashSet()); 71 } 72 73 public void testApply1Rule() throws Throwable { 74 RuleSet IUT = new RuleSet(); 75 76 MockRule rule = new MockRule("name", "desc", "msg"); 77 RuleContext ctx = new RuleContext(); 78 ctx.setSourceCodeFilename("filename"); 79 RuleViolation violation = new RuleViolation(rule, 1, ctx); 80 rule.addViolation(violation); 81 82 IUT.addRule(rule); 83 84 verifyRuleSet(IUT, 1, Collections.singleton(violation)); 85 } 86 87 public void testApplyNRule() throws Throwable { 88 RuleSet IUT = new RuleSet(); 89 90 Random rand = new Random(); 91 int numRules = rand.nextInt(10) + 1; 92 Set ruleViolations = new HashSet(); 93 94 for (int i = 0; i < numRules; i++) { 95 MockRule rule = new MockRule("name", "desc", "msg"); 96 RuleContext ctx = new RuleContext(); 97 ctx.setSourceCodeFilename("filename"); 98 RuleViolation violation = new RuleViolation(rule, i, ctx); 99 100 ruleViolations.add(violation); 101 rule.addViolation(violation); 102 103 IUT.addRule(rule); 104 } 105 106 verifyRuleSet(IUT, numRules, ruleViolations); 107 } 108 109 protected void verifyRuleSet(RuleSet IUT, int size, Set values) throws Throwable { 110 111 RuleContext context = new RuleContext(); 112 Set reportedValues = new HashSet(); 113 context.setReport(new Report()); 114 IUT.apply(makeCompilationUnits(), context); 115 116 assertEquals("Invalid number of Violations Reported", size, context.getReport().size()); 117 118 Iterator violations = context.getReport().iterator(); 119 while (violations.hasNext()) { 120 RuleViolation violation = (RuleViolation) violations.next(); 121 122 reportedValues.add(violation); 123 assertTrue("Unexpected Violation Returned: " + violation, values.contains(violation)); 124 } 125 126 Iterator expected = values.iterator(); 127 while (expected.hasNext()) { 128 RuleViolation violation = (RuleViolation) expected.next(); 129 assertTrue("Expected Violation not Returned: " + violation, reportedValues.contains(violation)); 130 } 131 } 132 133 134 protected List makeCompilationUnits() throws Throwable { 135 List RC = new ArrayList(); 136 JavaParser parser = new JavaParser(new StringReader(javaCode)); 137 RC.add(parser.CompilationUnit()); 138 return RC; 139 } 140 }

This page was automatically generated by Maven