1 /** 2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html 3 */ 4 package test.net.sourceforge.pmd; 5 6 import static org.junit.Assert.assertEquals; 7 import static org.junit.Assert.assertFalse; 8 import static org.junit.Assert.assertNotNull; 9 import static org.junit.Assert.assertNull; 10 import static org.junit.Assert.assertTrue; 11 12 import java.io.File; 13 14 import junit.framework.JUnit4TestAdapter; 15 import net.sourceforge.pmd.Report; 16 import net.sourceforge.pmd.RuleContext; 17 18 import org.junit.Test; 19 20 public class RuleContextTest { 21 22 @Test 23 public void testReport() { 24 RuleContext ctx = new RuleContext(); 25 assertEquals(0, ctx.getReport().size()); 26 Report r = new Report(); 27 ctx.setReport(r); 28 Report r2 = ctx.getReport(); 29 assertEquals("report object mismatch", r, r2); 30 } 31 32 @Test 33 public void testSourceCodeFilename() { 34 RuleContext ctx = new RuleContext(); 35 assertNull("filename should be null", ctx.getSourceCodeFilename()); 36 ctx.setSourceCodeFilename("foo"); 37 assertEquals("filename mismatch", "foo", ctx.getSourceCodeFilename()); 38 } 39 40 @Test 41 public void testSourceCodeFile() { 42 RuleContext ctx = new RuleContext(); 43 assertNull("file should be null", ctx.getSourceCodeFile()); 44 ctx.setSourceCodeFile(new File("somefile.java")); 45 assertEquals("filename mismatch", new File("somefile.java"), ctx.getSourceCodeFile()); 46 } 47 48 @Test 49 public void testAttributes() { 50 RuleContext ctx1 = new RuleContext(); 51 Object obj1 = new Object(); 52 Object obj2 = new Object(); 53 assertNull("attribute should be null", ctx1.getAttribute("attribute")); 54 boolean set = ctx1.setAttribute("attribute", obj1); 55 assertTrue("attribute should have been set", set); 56 assertNotNull("attribute should not be null", ctx1.getAttribute("attribute")); 57 assertTrue("attribute should be expected instance", ctx1.getAttribute("attribute") == obj1); 58 set = ctx1.setAttribute("attribute", obj2); 59 assertFalse("attribute should not have been set", set); 60 assertTrue("attribute should be expected instance", ctx1.getAttribute("attribute") == obj1); 61 Object value = ctx1.removeAttribute("attribute"); 62 assertTrue("attribute value should be expected instance", value == obj1); 63 assertNull("attribute should be null", ctx1.getAttribute("attribute")); 64 } 65 66 @Test 67 public void testSharedAttributes() { 68 RuleContext ctx1 = new RuleContext(); 69 RuleContext ctx2 = new RuleContext(ctx1); 70 StringBuilder obj1 = new StringBuilder(); 71 StringBuilder obj2 = new StringBuilder(); 72 73 ctx1.setAttribute("attribute1", obj1); 74 ctx2.setAttribute("attribute2", obj2); 75 assertNotNull("attribute should not be null", ctx1.getAttribute("attribute1")); 76 assertNotNull("attribute should not be null", ctx1.getAttribute("attribute2")); 77 assertNotNull("attribute should not be null", ctx2.getAttribute("attribute1")); 78 assertNotNull("attribute should not be null", ctx2.getAttribute("attribute2")); 79 assertTrue("attribute should be expected instance", ctx1.getAttribute("attribute1") == obj1); 80 assertTrue("attribute should be expected instance", ctx1.getAttribute("attribute2") == obj2); 81 assertTrue("attribute should be expected instance", ctx2.getAttribute("attribute1") == obj1); 82 assertTrue("attribute should be expected instance", ctx2.getAttribute("attribute2") == obj2); 83 84 ctx1.removeAttribute("attribute1"); 85 assertNull("attribute should be null", ctx1.getAttribute("attribute1")); 86 assertNull("attribute should be null", ctx2.getAttribute("attribute1")); 87 assertNotNull("attribute should not be null", ctx1.getAttribute("attribute2")); 88 assertNotNull("attribute should not be null", ctx2.getAttribute("attribute2")); 89 90 StringBuilder value = (StringBuilder)ctx1.getAttribute("attribute2"); 91 assertEquals("attribute value should be empty", "", value.toString()); 92 value.append("x"); 93 StringBuilder value1 = (StringBuilder)ctx1.getAttribute("attribute2"); 94 assertEquals("attribute value should be 'x'", "x", value1.toString()); 95 StringBuilder value2 = (StringBuilder)ctx2.getAttribute("attribute2"); 96 assertEquals("attribute value should be 'x'", "x", value2.toString()); 97 } 98 99 public static junit.framework.Test suite() { 100 return new JUnit4TestAdapter(RuleContextTest.class); 101 } 102 }