1   package test.net.sourceforge.pmd.rules;
2   
3   import net.sourceforge.pmd.PMD;
4   import net.sourceforge.pmd.Report;
5   import net.sourceforge.pmd.Rule;
6   import net.sourceforge.pmd.RuleContext;
7   import net.sourceforge.pmd.RuleSet;
8   import net.sourceforge.pmd.RuleViolation;
9   import net.sourceforge.pmd.rules.XPathRule;
10  import test.net.sourceforge.pmd.testframework.RuleTst;
11  
12  import java.io.StringReader;
13  
14  /***
15   * @author daniels
16   */
17  public class XPathRuleTest extends RuleTst {
18  
19      XPathRule rule;
20  
21      public void setUp() {
22          rule = new XPathRule();
23          rule.setMessage("XPath Rule Failed");
24      }
25  
26      public void testPluginname() throws Throwable {
27          Rule rule = new XPathRule();
28          rule.addProperty("xpath", "//VariableDeclaratorId[string-length(@Image) < 3]");
29          rule.setMessage("{0}");
30          rule.addProperty("pluginname", "true");
31          PMD p = new PMD();
32          RuleContext ctx = new RuleContext();
33          Report report = new Report();
34          ctx.setReport(report);
35          ctx.setSourceCodeFilename("n/a");
36          RuleSet rules = new RuleSet();
37          rules.addRule(rule);
38          p.processFile(new StringReader(TEST1), rules, ctx);
39          RuleViolation rv = (RuleViolation)report.iterator().next();
40          assertEquals("a", rv.getDescription());
41      }
42  
43      private static final String TEST1 =
44      "public class Foo {" + PMD.EOL +
45      "    int a;" + PMD.EOL +
46      "}";
47  }