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