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