1 package test.net.sourceforge.pmd.jsp.ast;
2
3 import net.sourceforge.pmd.Language;
4 import net.sourceforge.pmd.PMD;
5 import net.sourceforge.pmd.Report;
6 import net.sourceforge.pmd.Rule;
7 import net.sourceforge.pmd.RuleContext;
8 import net.sourceforge.pmd.RuleSet;
9 import net.sourceforge.pmd.RuleSets;
10 import net.sourceforge.pmd.RuleViolation;
11 import net.sourceforge.pmd.SourceType;
12 import net.sourceforge.pmd.rules.XPathRule;
13 import test.net.sourceforge.pmd.testframework.RuleTst;
14
15 import java.io.StringReader;
16
17 public class XPathJspRuleTest extends RuleTst {
18
19 /***
20 * Test matching a XPath expression against a JSP source.
21 *
22 * @throws Throwable
23 */
24 public void testExpressionMatching() throws Throwable {
25 Rule rule = new XPathRule();
26 rule.addProperty("xpath", XPATH_EXPRESSION);
27 rule.setMessage("Test");
28 RuleSet rules = new RuleSet();
29 rules.addRule(rule);
30 rules.setLanguage(Language.JSP);
31
32 RuleContext ctx = new RuleContext();
33 Report report = new Report();
34 ctx.setReport(report);
35 ctx.setSourceCodeFilename("n/a");
36
37 PMD p = new PMD();
38
39 p.processFile(new StringReader(MATCH), new RuleSets(rules), ctx, SourceType.JSP);
40
41 assertEquals("One violation expected!", 1, report.size());
42
43 RuleViolation rv = (RuleViolation) report.iterator().next();
44 assertEquals(1, rv.getBeginLine());
45 }
46
47 private static final String MATCH
48 = "<html><hr/></html>";
49
50 private static final String XPATH_EXPRESSION
51 = "//Element [@Name='hr']";
52
53 }