View Javadoc

1   package net.sourceforge.pmd.jaxen;
2   
3   import static org.junit.Assert.assertTrue;
4   
5   import java.util.ArrayList;
6   import java.util.List;
7   
8   import net.sourceforge.pmd.lang.ast.AbstractNode;
9   import net.sourceforge.pmd.lang.ast.xpath.Attribute;
10  import net.sourceforge.pmd.lang.xpath.MatchesFunction;
11  
12  import org.jaxen.Context;
13  import org.jaxen.FunctionCallException;
14  import org.junit.Test;
15  
16  public class MatchesFunctionTest {
17      
18      public static class MyNode extends AbstractNode
19      {
20  	private String className;
21  	public MyNode() {
22  	    super(1);
23  	}
24  	public String toString() {
25  	    return "MyNode";
26  	}
27  	public void setClassName(String className) {
28  	   this.className = className;
29  	}
30  	public String getClassName() {
31  	    return className;
32  	}
33      };
34  
35      @Test
36      public void testMatch() throws FunctionCallException, NoSuchMethodException {
37  	MyNode myNode = new MyNode();
38  	myNode.setClassName("Foo");
39          assertTrue(tryRegexp(myNode, "Foo") instanceof List);
40      }
41  
42      @Test
43      public void testNoMatch() throws FunctionCallException, NoSuchMethodException {
44  	MyNode myNode = new MyNode();
45  	myNode.setClassName("bar");
46          assertTrue(tryRegexp(myNode, "Foo") instanceof Boolean);
47  	myNode.setClassName("FobboBar");
48          assertTrue(tryRegexp(myNode, "Foo") instanceof Boolean);
49      }
50  
51      private Object tryRegexp(MyNode myNode, String exp) throws FunctionCallException, NoSuchMethodException {
52          MatchesFunction function = new MatchesFunction();
53          List<Object> list = new ArrayList<Object>();
54          List<Attribute> attrs = new ArrayList<Attribute>();
55          attrs.add(new Attribute(myNode, "matches", myNode.getClass().getMethod("getClassName", new Class[0])));
56          list.add(attrs);
57          list.add(exp);
58          Context c = new Context(null);
59          c.setNodeSet(new ArrayList());
60          return function.call(c, list);
61      }
62  
63      public static junit.framework.Test suite() {
64          return new junit.framework.JUnit4TestAdapter(MatchesFunctionTest.class);
65      }
66  }
67  
68