    1   package test.net.sourceforge.pmd.jaxen;
    2
    3   import junit.framework.TestCase;
    4   import net.sourceforge.pmd.ast.JavaParserVisitor;
    5   import net.sourceforge.pmd.ast.Node;
    6   import net.sourceforge.pmd.jaxen.Attribute;
    7   import net.sourceforge.pmd.jaxen.MatchesFunction;
    8   import org.jaxen.Context;
    9   import org.jaxen.FunctionCallException;
    10
    11  import java.util.ArrayList;
    12  import java.util.List;
    13
    14  public class MatchesFunctionTest extends TestCase implements Node {
    15
    16      public void jjtOpen() {
    17      }
    18
    19      public void jjtClose() {
    20      }
    21
    22      public void jjtSetParent(Node n) {
    23      }
    24
    25      public Node jjtGetParent() {
    26          return null;
    27      }
    28
    29      public void jjtAddChild(Node n, int i) {
    30      }
    31
    32      public Node jjtGetChild(int i) {
    33          return null;
    34      }
    35
    36      public int jjtGetNumChildren() {
    37          return 0;
    38      }
    39
    40      public Object jjtAccept(JavaParserVisitor visitor, Object data) {
    41          return null;
    42      }
    43
    44      private String className;
    45
    46      public String getValue() {
    47          return className;
    48      }
    49
    50      public void testMatch() throws FunctionCallException {
    51          className = "Foo";
    52          assertTrue(tryRegexp("Foo") instanceof List);
    53      }
    54
    55      public void testNoMatch() throws FunctionCallException {
    56          className = "bar";
    57          assertTrue(tryRegexp("Foo") instanceof Boolean);
    58          className = "FobboBar";
    59          assertTrue(tryRegexp("Foo") instanceof Boolean);
    60      }
    61
    62      private Object tryRegexp(String exp) throws FunctionCallException {
    63          MatchesFunction function = new MatchesFunction();
    64          List list = new ArrayList();
    65          List attrs = new ArrayList();
    66          attrs.add(new Attribute(this, "matches", getClass().getMethods()[0]));
    67          list.add(attrs);
    68          list.add(exp);
    69          Context c = new Context(null);
    70          c.setNodeSet(new ArrayList());
    71          return function.call(c, list);
    72      }
    73  }