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