1
2
3
4 package net.sourceforge.pmd.lang.plsql;
5
6 import java.util.Arrays;
7
8 import net.sourceforge.pmd.RuleContext;
9 import net.sourceforge.pmd.lang.LanguageRegistry;
10 import net.sourceforge.pmd.lang.plsql.ast.ASTInput;
11 import net.sourceforge.pmd.lang.rule.XPathRule;
12
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Test;
16
17
18
19
20 public class PLSQLXPathRuleTest extends AbstractPLSQLParserTst {
21
22 private ASTInput node = parsePLSQL("create or replace\n" +
23 "package pkg_xpath_problem\n" +
24 "AS\n" +
25 " PROCEDURE pkg_minimal\n" +
26 " IS\n" +
27 " a_variable VARCHAR2(1);\n" +
28 " BEGIN \n" +
29 " --PRAGMA INLINE(output,'YES');\n" +
30 " a_variable := 'Y' ;\n" +
31 " END ;\n" +
32 "end pkg_xpath_problem;\n" +
33 "/\n" +
34 "");
35
36 private RuleContext ctx = new RuleContext();
37
38 @Before
39 public void setup() {
40 ctx.setLanguageVersion(LanguageRegistry.getLanguage(PLSQLLanguageModule.NAME).getDefaultVersion());
41 }
42
43
44
45
46 @Test
47 public void testXPathRule1() {
48 XPathRule rule = createRule("1.0");
49
50 rule.apply(Arrays.asList(node), ctx);
51 Assert.assertEquals(2, ctx.getReport().treeSize());
52 }
53
54
55
56
57 @Test
58 public void testXPathRule1Compatibility() {
59 XPathRule rule = createRule("1.0 compatibility");
60
61 rule.apply(Arrays.asList(node), ctx);
62 Assert.assertEquals(2, ctx.getReport().treeSize());
63 }
64
65
66
67
68 @Test
69 public void testXPathRule2() {
70 XPathRule rule = createRule("2.0");
71
72 rule.apply(Arrays.asList(node), ctx);
73 Assert.assertEquals(2, ctx.getReport().treeSize());
74 }
75
76 private XPathRule createRule(String version) {
77 XPathRule rule = new XPathRule("//PrimaryExpression");
78 rule.setLanguage(LanguageRegistry.getLanguage(PLSQLLanguageModule.NAME));
79 rule.setVersion(version);
80 rule.setMessage("Test Violation");
81 return rule;
82 }
83
84 }