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