1
2
3
4 package net.sourceforge.pmd;
5
6 import static org.junit.Assert.assertEquals;
7 import static org.junit.Assert.assertFalse;
8 import static org.junit.Assert.assertNull;
9 import static org.junit.Assert.assertTrue;
10 import junit.framework.JUnit4TestAdapter;
11 import net.sourceforge.pmd.lang.Dummy2LanguageModule;
12 import net.sourceforge.pmd.lang.DummyLanguageModule;
13 import net.sourceforge.pmd.lang.LanguageRegistry;
14 import net.sourceforge.pmd.lang.rule.MockRule;
15 import net.sourceforge.pmd.lang.rule.RuleReference;
16 import net.sourceforge.pmd.lang.rule.properties.StringProperty;
17
18 import org.junit.Test;
19
20 public class RuleReferenceTest {
21
22 @Test
23 public void testRuleSetReference() {
24 RuleReference ruleReference = new RuleReference();
25 RuleSetReference ruleSetReference = new RuleSetReference();
26 ruleReference.setRuleSetReference(ruleSetReference);
27 assertEquals("Not same rule set reference", ruleSetReference, ruleReference.getRuleSetReference());
28 }
29
30 @Test
31 public void testOverride() {
32 StringProperty PROPERTY1_DESCRIPTOR = new StringProperty("property1", "Test property", null, 0f);
33 MockRule rule = new MockRule();
34 rule.definePropertyDescriptor(PROPERTY1_DESCRIPTOR);
35 rule.setLanguage(LanguageRegistry.getLanguage(Dummy2LanguageModule.NAME));
36 rule.setName("name1");
37 rule.setProperty(PROPERTY1_DESCRIPTOR, "value1");
38 rule.setMessage("message1");
39 rule.setDescription("description1");
40 rule.addExample("example1");
41 rule.setExternalInfoUrl("externalInfoUrl1");
42 rule.setPriority(RulePriority.HIGH);
43
44 StringProperty PROPERTY2_DESCRIPTOR = new StringProperty("property2", "Test property", null, 0f);
45 RuleReference ruleReference = new RuleReference();
46 ruleReference.setRule(rule);
47 ruleReference.definePropertyDescriptor(PROPERTY2_DESCRIPTOR);
48 ruleReference.setLanguage(LanguageRegistry.getLanguage(DummyLanguageModule.NAME));
49 ruleReference.setMinimumLanguageVersion(LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.3"));
50 ruleReference.setMaximumLanguageVersion(LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.7"));
51 ruleReference.setDeprecated(true);
52 ruleReference.setName("name2");
53 ruleReference.setProperty(PROPERTY1_DESCRIPTOR, "value2");
54 ruleReference.setProperty(PROPERTY2_DESCRIPTOR, "value3");
55 ruleReference.setMessage("message2");
56 ruleReference.setDescription("description2");
57 ruleReference.addExample("example2");
58 ruleReference.setExternalInfoUrl("externalInfoUrl2");
59 ruleReference.setPriority(RulePriority.MEDIUM_HIGH);
60
61 assertEquals("Override failed", LanguageRegistry.getLanguage(DummyLanguageModule.NAME), ruleReference.getLanguage());
62 assertEquals("Override failed", LanguageRegistry.getLanguage(DummyLanguageModule.NAME), ruleReference.getOverriddenLanguage());
63
64 assertEquals("Override failed", LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.3"), ruleReference.getMinimumLanguageVersion());
65 assertEquals("Override failed", LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.3"), ruleReference.getOverriddenMinimumLanguageVersion());
66
67 assertEquals("Override failed", LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.7"), ruleReference.getMaximumLanguageVersion());
68 assertEquals("Override failed", LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.7"), ruleReference.getOverriddenMaximumLanguageVersion());
69
70 assertEquals("Override failed", false, ruleReference.getRule().isDeprecated());
71 assertEquals("Override failed", true, ruleReference.isDeprecated());
72 assertEquals("Override failed", true, ruleReference.isOverriddenDeprecated());
73
74 assertEquals("Override failed", "name2", ruleReference.getName());
75 assertEquals("Override failed", "name2", ruleReference.getOverriddenName());
76
77 assertEquals("Override failed", "value2", ruleReference.getProperty(PROPERTY1_DESCRIPTOR));
78 assertEquals("Override failed", "value3", ruleReference.getProperty(PROPERTY2_DESCRIPTOR));
79 assertTrue("Override failed", ruleReference.getPropertyDescriptors().contains(PROPERTY1_DESCRIPTOR));
80 assertTrue("Override failed", ruleReference.getPropertyDescriptors().contains(PROPERTY2_DESCRIPTOR));
81 assertFalse("Override failed", ruleReference.getOverriddenPropertyDescriptors().contains(PROPERTY1_DESCRIPTOR));
82 assertTrue("Override failed", ruleReference.getOverriddenPropertyDescriptors().contains(PROPERTY2_DESCRIPTOR));
83 assertTrue("Override failed", ruleReference.getPropertiesByPropertyDescriptor().containsKey(PROPERTY1_DESCRIPTOR));
84 assertTrue("Override failed", ruleReference.getPropertiesByPropertyDescriptor().containsKey(PROPERTY2_DESCRIPTOR));
85 assertTrue("Override failed", ruleReference.getOverriddenPropertiesByPropertyDescriptor().containsKey(PROPERTY1_DESCRIPTOR));
86 assertTrue("Override failed", ruleReference.getOverriddenPropertiesByPropertyDescriptor().containsKey(PROPERTY2_DESCRIPTOR));
87
88 assertEquals("Override failed", "message2", ruleReference.getMessage());
89 assertEquals("Override failed", "message2", ruleReference.getOverriddenMessage());
90
91 assertEquals("Override failed", "description2", ruleReference.getDescription());
92 assertEquals("Override failed", "description2", ruleReference.getOverriddenDescription());
93
94 assertEquals("Override failed", 2, ruleReference.getExamples().size());
95 assertEquals("Override failed", "example1", ruleReference.getExamples().get(0));
96 assertEquals("Override failed", "example2", ruleReference.getExamples().get(1));
97 assertEquals("Override failed", "example2", ruleReference.getOverriddenExamples().get(0));
98
99 assertEquals("Override failed", "externalInfoUrl2", ruleReference.getExternalInfoUrl());
100 assertEquals("Override failed", "externalInfoUrl2", ruleReference.getOverriddenExternalInfoUrl());
101
102 assertEquals("Override failed", RulePriority.MEDIUM_HIGH, ruleReference.getPriority());
103 assertEquals("Override failed", RulePriority.MEDIUM_HIGH, ruleReference.getOverriddenPriority());
104 }
105
106 @Test
107 public void testNotOverride() {
108 StringProperty PROPERTY1_DESCRIPTOR = new StringProperty("property1", "Test property", null, 0f);
109 MockRule rule = new MockRule();
110 rule.definePropertyDescriptor(PROPERTY1_DESCRIPTOR);
111 rule.setLanguage(LanguageRegistry.getLanguage(DummyLanguageModule.NAME));
112 rule.setMinimumLanguageVersion(LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.3"));
113 rule.setMaximumLanguageVersion(LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.7"));
114 rule.setName("name1");
115 rule.setProperty(PROPERTY1_DESCRIPTOR, "value1");
116 rule.setMessage("message1");
117 rule.setDescription("description1");
118 rule.addExample("example1");
119 rule.setExternalInfoUrl("externalInfoUrl1");
120 rule.setPriority(RulePriority.HIGH);
121
122 RuleReference ruleReference = new RuleReference();
123 ruleReference.setRule(rule);
124 ruleReference.setLanguage(LanguageRegistry.getLanguage(DummyLanguageModule.NAME));
125 ruleReference.setMinimumLanguageVersion(LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.3"));
126 ruleReference.setMaximumLanguageVersion(LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.7"));
127 ruleReference.setDeprecated(false);
128 ruleReference.setName("name1");
129 ruleReference.setProperty(PROPERTY1_DESCRIPTOR, "value1");
130 ruleReference.setMessage("message1");
131 ruleReference.setDescription("description1");
132 ruleReference.addExample("example1");
133 ruleReference.setExternalInfoUrl("externalInfoUrl1");
134 ruleReference.setPriority(RulePriority.HIGH);
135
136 assertEquals("Override failed", LanguageRegistry.getLanguage(DummyLanguageModule.NAME), ruleReference.getLanguage());
137 assertNull("Override failed", ruleReference.getOverriddenLanguage());
138
139 assertEquals("Override failed", LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.3"), ruleReference.getMinimumLanguageVersion());
140 assertNull("Override failed", ruleReference.getOverriddenMinimumLanguageVersion());
141
142 assertEquals("Override failed", LanguageRegistry.getLanguage(DummyLanguageModule.NAME).getVersion("1.7"), ruleReference.getMaximumLanguageVersion());
143 assertNull("Override failed", ruleReference.getOverriddenMaximumLanguageVersion());
144
145 assertEquals("Override failed", false, ruleReference.isDeprecated());
146 assertNull("Override failed", ruleReference.isOverriddenDeprecated());
147
148 assertEquals("Override failed", "name1", ruleReference.getName());
149 assertNull("Override failed", ruleReference.getOverriddenName());
150
151 assertEquals("Override failed", "value1", ruleReference.getProperty(PROPERTY1_DESCRIPTOR));
152
153 assertEquals("Override failed", "message1", ruleReference.getMessage());
154 assertNull("Override failed", ruleReference.getOverriddenMessage());
155
156 assertEquals("Override failed", "description1", ruleReference.getDescription());
157 assertNull("Override failed", ruleReference.getOverriddenDescription());
158
159 assertEquals("Override failed", 1, ruleReference.getExamples().size());
160 assertEquals("Override failed", "example1", ruleReference.getExamples().get(0));
161 assertNull("Override failed", ruleReference.getOverriddenExamples());
162
163 assertEquals("Override failed", "externalInfoUrl1", ruleReference.getExternalInfoUrl());
164 assertNull("Override failed", ruleReference.getOverriddenExternalInfoUrl());
165
166 assertEquals("Override failed", RulePriority.HIGH, ruleReference.getPriority());
167 assertNull("Override failed", ruleReference.getOverriddenPriority());
168 }
169
170 public static junit.framework.Test suite() {
171 return new JUnit4TestAdapter(RuleReferenceTest.class);
172 }
173 }