1   package test.net.sourceforge.pmd;
2   
3   import static org.junit.Assert.assertEquals;
4   import static org.junit.Assert.assertNull;
5   import junit.framework.JUnit4TestAdapter;
6   import net.sourceforge.pmd.MockRule;
7   import net.sourceforge.pmd.RuleReference;
8   import net.sourceforge.pmd.RuleSetReference;
9   
10  import org.junit.Test;
11  
12  public class RuleReferenceTest {
13  
14  	@Test
15  	public void testRuleSetReference() {
16  		RuleReference ruleReference = new RuleReference();
17  		RuleSetReference ruleSetReference = new RuleSetReference();
18  		ruleReference.setRuleSetReference(ruleSetReference);
19  		assertEquals("Not same rule set reference", ruleSetReference, ruleReference.getRuleSetReference());
20  	}
21  
22  	@Test
23  	public void testOverride() {
24  		MockRule rule = new MockRule();
25  		rule.setName("name1");
26  		rule.addProperty("property1", "value1");
27  		rule.setMessage("message1");
28  		rule.setDescription("description1");
29  		rule.addExample("example1");
30  		rule.setExternalInfoUrl("externalInfoUrl1");
31  		rule.setPriority(1);
32  
33  		RuleReference ruleReference = new RuleReference();
34  		ruleReference.setRule(rule);
35  		ruleReference.setName("name2");
36  		ruleReference.addProperty("property1", "value2");
37  		ruleReference.setMessage("message2");
38  		ruleReference.setDescription("description2");
39  		ruleReference.addExample("example2");
40  		ruleReference.setExternalInfoUrl("externalInfoUrl2");
41  		ruleReference.setPriority(2);
42  
43  		assertEquals("Override failed", "name2", ruleReference.getName());
44  		assertEquals("Override failed", "name2", ruleReference.getOverriddenName());
45  
46  		assertEquals("Override failed", "value2", ruleReference.getProperties().getProperty("property1"));
47  		assertEquals("Override failed", "value2", ruleReference.getOverriddenProperties().getProperty("property1"));
48  
49  		assertEquals("Override failed", "message2", ruleReference.getMessage());
50  		assertEquals("Override failed", "message2", ruleReference.getOverriddenMessage());
51  
52  		assertEquals("Override failed", "description2", ruleReference.getDescription());
53  		assertEquals("Override failed", "description2", ruleReference.getOverriddenDescription());
54  
55  		// TODO Examples is being tested as currently working, but needs to be fixed at some point
56  		assertEquals("Override failed", "example2", ruleReference.getExample());
57  		assertEquals("Override failed", 2, ruleReference.getExamples().size());
58  		assertEquals("Override failed", "example1", ruleReference.getExamples().get(0));
59  		assertEquals("Override failed", "example2", ruleReference.getExamples().get(1));
60  		assertEquals("Override failed", "example2", ruleReference.getOverriddenExamples().get(0));
61  
62  		assertEquals("Override failed", "externalInfoUrl2", ruleReference.getExternalInfoUrl());
63  		assertEquals("Override failed", "externalInfoUrl2", ruleReference.getOverriddenExternalInfoUrl());
64  
65  		assertEquals("Override failed", 2, ruleReference.getPriority());
66  		assertEquals("Override failed", (Integer)2, ruleReference.getOverriddenPriority());
67  	}
68  
69  	@Test
70  	public void testNotOverride() {
71  		MockRule rule = new MockRule();
72  		rule.setName("name1");
73  		rule.addProperty("property1", "value1");
74  		rule.setMessage("message1");
75  		rule.setDescription("description1");
76  		rule.addExample("example1");
77  		rule.setExternalInfoUrl("externalInfoUrl1");
78  		rule.setPriority(1);
79  
80  		RuleReference ruleReference = new RuleReference();
81  		ruleReference.setRule(rule);
82  		ruleReference.setName("name1");
83  		ruleReference.addProperty("property1", "value1");
84  		ruleReference.setMessage("message1");
85  		ruleReference.setDescription("description1");
86  		ruleReference.addExample("example1");
87  		ruleReference.setExternalInfoUrl("externalInfoUrl1");
88  		ruleReference.setPriority(1);
89  
90  		assertEquals("Override failed", "name1", ruleReference.getName());
91  		assertNull("Override failed", ruleReference.getOverriddenName());
92  
93  		assertEquals("Override failed", "value1", ruleReference.getProperties().getProperty("property1"));
94  		assertNull("Override failed", ruleReference.getOverriddenProperties());
95  
96  		assertEquals("Override failed", "message1", ruleReference.getMessage());
97  		assertNull("Override failed", ruleReference.getOverriddenMessage());
98  
99  		assertEquals("Override failed", "description1", ruleReference.getDescription());
100 		assertNull("Override failed", ruleReference.getOverriddenDescription());
101 
102 		assertEquals("Override failed", "example1", ruleReference.getExample());
103 		assertEquals("Override failed", 1, ruleReference.getExamples().size());
104 		assertEquals("Override failed", "example1", ruleReference.getExamples().get(0));
105 		assertNull("Override failed", ruleReference.getOverriddenExamples());
106 
107 		assertEquals("Override failed", "externalInfoUrl1", ruleReference.getExternalInfoUrl());
108 		assertNull("Override failed", ruleReference.getOverriddenExternalInfoUrl());
109 
110 		assertEquals("Override failed", 1, ruleReference.getPriority());
111 		assertNull("Override failed", ruleReference.getOverriddenPriority());
112 	}
113 
114 	public static junit.framework.Test suite() {
115 		return new JUnit4TestAdapter(RuleReferenceTest.class);
116 	}
117 }