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