1
2
3
4 package net.sourceforge.pmd;
5
6 import static org.junit.Assert.assertEquals;
7
8 import java.io.File;
9 import java.util.List;
10
11 import org.junit.Test;
12
13 public class RuleSetReferenceIdTest {
14
15 private static void assertRuleSetReferenceId(final boolean expectedExternal, final String expectedRuleSetFileName,
16 final boolean expectedAllRules, final String expectedRuleName, final String expectedToString,
17 final RuleSetReferenceId reference) {
18 assertEquals("Wrong external", expectedExternal, reference.isExternal());
19 assertEquals("Wrong RuleSet file name", expectedRuleSetFileName, reference.getRuleSetFileName());
20 assertEquals("Wrong all Rule reference", expectedAllRules, reference.isAllRules());
21 assertEquals("Wrong Rule name", expectedRuleName, reference.getRuleName());
22 assertEquals("Wrong toString()", expectedToString, reference.toString());
23 }
24
25 @Test(expected = IllegalArgumentException.class)
26 public void testCommaInSingleId() {
27 new RuleSetReferenceId("bad,id");
28 }
29
30 @Test(expected = IllegalArgumentException.class)
31 public void testInternalWithInternal() {
32 new RuleSetReferenceId("SomeRule", new RuleSetReferenceId("SomeOtherRule"));
33 }
34
35 @Test(expected = IllegalArgumentException.class)
36 public void testExternalWithExternal() {
37 new RuleSetReferenceId("someruleset.xml/SomeRule", new RuleSetReferenceId("someruleset.xml/SomeOtherRule"));
38 }
39
40 @Test(expected = IllegalArgumentException.class)
41 public void testExternalWithInternal() {
42 new RuleSetReferenceId("someruleset.xml/SomeRule", new RuleSetReferenceId("SomeOtherRule"));
43 }
44
45 @Test
46 public void testInteralWithExternal() {
47
48 new RuleSetReferenceId("SomeRule", new RuleSetReferenceId("someruleset.xml/SomeOtherRule"));
49 }
50
51 @Test
52 public void testEmptyRuleSet() {
53
54 RuleSetReferenceId reference = new RuleSetReferenceId(null);
55 assertRuleSetReferenceId(true, null, true, null, "anonymous all Rule", reference);
56 }
57
58 @Test
59 public void testInternalWithExternalRuleSet() {
60
61
62 RuleSetReferenceId internalRuleSetReferenceId = new RuleSetReferenceId("MockRuleName");
63 assertRuleSetReferenceId(false, null, false, "MockRuleName", "MockRuleName", internalRuleSetReferenceId);
64 RuleSetReferenceId externalRuleSetReferenceId = new RuleSetReferenceId("rulesets/java/basic.xml");
65 assertRuleSetReferenceId(true, "rulesets/java/basic.xml", true, null, "rulesets/java/basic.xml",
66 externalRuleSetReferenceId);
67
68 RuleSetReferenceId pairRuleSetReferenceId = new RuleSetReferenceId("MockRuleName", externalRuleSetReferenceId);
69 assertRuleSetReferenceId(true, "rulesets/java/basic.xml", false, "MockRuleName",
70 "rulesets/java/basic.xml/MockRuleName", pairRuleSetReferenceId);
71 }
72
73 @Test
74 public void testOneSimpleRuleSet() {
75 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("java-basic");
76 assertEquals(1, references.size());
77 assertRuleSetReferenceId(true, "rulesets/java/basic.xml", true, null, "rulesets/java/basic.xml", references
78 .get(0));
79 }
80
81 @Test
82 public void testMultipleSimpleRuleSet() {
83 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("java-unusedcode,java-basic");
84 assertEquals(2, references.size());
85 assertRuleSetReferenceId(true, "rulesets/java/unusedcode.xml", true, null, "rulesets/java/unusedcode.xml",
86 references.get(0));
87 assertRuleSetReferenceId(true, "rulesets/java/basic.xml", true, null, "rulesets/java/basic.xml", references
88 .get(1));
89 }
90
91 @Test
92 public void testOneReleaseRuleSet() {
93 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("50");
94 assertEquals(1, references.size());
95 assertRuleSetReferenceId(true, "rulesets/releases/50.xml", true, null, "rulesets/releases/50.xml", references
96 .get(0));
97 }
98
99 @Test
100 public void testOneFullRuleSet() {
101 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("rulesets/java/unusedcode.xml");
102 assertEquals(1, references.size());
103 assertRuleSetReferenceId(true, "rulesets/java/unusedcode.xml", true, null, "rulesets/java/unusedcode.xml",
104 references.get(0));
105 }
106
107 @Test
108 public void testOneFullRuleSetURL() {
109 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("file://somepath/rulesets/java/unusedcode.xml");
110 assertEquals(1, references.size());
111 assertRuleSetReferenceId(true, "file://somepath/rulesets/java/unusedcode.xml", true, null,
112 "file://somepath/rulesets/java/unusedcode.xml", references.get(0));
113 }
114
115 @Test
116 public void testMultipleFullRuleSet() {
117 List<RuleSetReferenceId> references = RuleSetReferenceId
118 .parse("rulesets/java/unusedcode.xml,rulesets/java/basic.xml");
119 assertEquals(2, references.size());
120 assertRuleSetReferenceId(true, "rulesets/java/unusedcode.xml", true, null, "rulesets/java/unusedcode.xml",
121 references.get(0));
122 assertRuleSetReferenceId(true, "rulesets/java/basic.xml", true, null, "rulesets/java/basic.xml", references
123 .get(1));
124 }
125
126 @Test
127 public void testMixRuleSet() {
128 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("rulesets/java/unusedcode.xml,xml-basic");
129 assertEquals(2, references.size());
130 assertRuleSetReferenceId(true, "rulesets/java/unusedcode.xml", true, null, "rulesets/java/unusedcode.xml",
131 references.get(0));
132 assertRuleSetReferenceId(true, "rulesets/xml/basic.xml", true, null, "rulesets/xml/basic.xml", references
133 .get(1));
134 }
135
136 @Test
137 public void testUnknownRuleSet() {
138 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("nonexistant.xml");
139 assertEquals(1, references.size());
140 assertRuleSetReferenceId(true, "nonexistant.xml", true, null, "nonexistant.xml", references.get(0));
141 }
142
143 @Test
144 public void testUnknownAndSimpleRuleSet() {
145 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("jsp-basic,nonexistant.xml");
146 assertEquals(2, references.size());
147 assertRuleSetReferenceId(true, "rulesets/jsp/basic.xml", true, null, "rulesets/jsp/basic.xml", references
148 .get(0));
149 assertRuleSetReferenceId(true, "nonexistant.xml", true, null, "nonexistant.xml", references.get(1));
150 }
151
152 @Test
153 public void testSimpleRuleSetAndRule() {
154 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("java-basic/EmptyCatchBlock");
155 assertEquals(1, references.size());
156 assertRuleSetReferenceId(true, "rulesets/java/basic.xml", false, "EmptyCatchBlock",
157 "rulesets/java/basic.xml/EmptyCatchBlock", references.get(0));
158 }
159
160 @Test
161 public void testFullRuleSetAndRule() {
162 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("rulesets/java/basic.xml/EmptyCatchBlock");
163 assertEquals(1, references.size());
164 assertRuleSetReferenceId(true, "rulesets/java/basic.xml", false, "EmptyCatchBlock",
165 "rulesets/java/basic.xml/EmptyCatchBlock", references.get(0));
166 }
167
168 @Test
169 public void testFullRuleSetURLAndRule() {
170 List<RuleSetReferenceId> references = RuleSetReferenceId
171 .parse("file://somepath/rulesets/java/unusedcode.xml/EmptyCatchBlock");
172 assertEquals(1, references.size());
173 assertRuleSetReferenceId(true, "file://somepath/rulesets/java/unusedcode.xml", false, "EmptyCatchBlock",
174 "file://somepath/rulesets/java/unusedcode.xml/EmptyCatchBlock", references.get(0));
175 }
176
177 @Test
178 public void testInternalRuleSetAndRule() {
179 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("EmptyCatchBlock");
180 assertEquals(1, references.size());
181 assertRuleSetReferenceId(false, null, false, "EmptyCatchBlock", "EmptyCatchBlock", references.get(0));
182 }
183
184 @Test
185 public void testRelativePathRuleSet() {
186 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("pmd/pmd-ruleset.xml");
187 assertEquals(1, references.size());
188 assertRuleSetReferenceId(true, "pmd/pmd-ruleset.xml", true, null, "pmd/pmd-ruleset.xml", references.get(0));
189 }
190
191 @Test
192 public void testAbsolutePathRuleSet() {
193 List<RuleSetReferenceId> references = RuleSetReferenceId.parse("/home/foo/pmd/pmd-ruleset.xml");
194 assertEquals(1, references.size());
195 assertRuleSetReferenceId(true, "/home/foo/pmd/pmd-ruleset.xml", true, null,
196 "/home/foo/pmd/pmd-ruleset.xml", references.get(0));
197 }
198
199 @Test
200 public void testFooRules() throws Exception {
201 String fooRulesFile = new File("./src/test/resources/net/sourceforge/pmd/rulesets/foo-project/foo-rules").getCanonicalPath();
202 List<RuleSetReferenceId> references = RuleSetReferenceId.parse(fooRulesFile);
203 assertEquals(1, references.size());
204 assertRuleSetReferenceId(true, fooRulesFile, true, null, fooRulesFile, references.get(0));
205 }
206
207 public static junit.framework.Test suite() {
208 return new junit.framework.JUnit4TestAdapter(RuleSetReferenceIdTest.class);
209 }
210 }