1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 package org.jaxen.expr;
65
66 import java.io.IOException;
67 import java.io.StringReader;
68 import java.util.List;
69
70 import javax.xml.parsers.DocumentBuilderFactory;
71 import javax.xml.parsers.ParserConfigurationException;
72
73 import org.jaxen.JaxenException;
74 import org.jaxen.dom.DOMXPath;
75 import org.w3c.dom.Document;
76 import org.w3c.dom.Element;
77 import org.xml.sax.InputSource;
78 import org.xml.sax.SAXException;
79
80 import junit.framework.TestCase;
81
82 /***
83 * <p>
84 * Test for function context.
85 * </p>
86 *
87 * @author Elliotte Rusty Harold
88 * @version 1.1b4
89 *
90 */
91 public class EqualsTest extends TestCase
92 {
93
94 public void testEqualityAgainstNonExistentNodes()
95 throws JaxenException, ParserConfigurationException {
96
97 DOMXPath xpath = new DOMXPath("/a/b[c = ../d]");
98
99 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
100 factory.setNamespaceAware(true);
101 Document doc = factory.newDocumentBuilder().newDocument();
102 Element root = doc.createElement("a");
103 doc.appendChild(root);
104 Element b = doc.createElement("b");
105 root.appendChild(b);
106 Element c = doc.createElement("c");
107 b.appendChild(c);
108
109 List result = (List) xpath.evaluate(doc);
110 assertEquals(0, result.size());
111
112 }
113
114 public void testOlander()
115 throws JaxenException, SAXException, IOException, ParserConfigurationException {
116
117 DOMXPath xpath = new DOMXPath("//BlockStatement//IfStatement[./Statement = ./ancestor::BlockStatement/following-sibling::BlockStatement//IfStatement/Statement]");
118
119 String data = "<?xml version='1.0'?><Block><BlockStatement><LocalVariableDeclaration><Type><PrimitiveType>boolean</PrimitiveType></Type><VariableDeclarator><VariableDeclaratorId/></VariableDeclarator><VariableDeclarator><VariableDeclaratorId/></VariableDeclarator></LocalVariableDeclaration></BlockStatement><BlockStatement><Statement><IfStatement><Expression><PrimaryExpression><PrimaryPrefix><Name>a</Name></PrimaryPrefix></PrimaryExpression></Expression><Statement><StatementExpression><PrimaryExpression><PrimaryPrefix><Name>methodB</Name></PrimaryPrefix><PrimarySuffix><Arguments/></PrimarySuffix></PrimaryExpression></StatementExpression></Statement></IfStatement></Statement></BlockStatement><BlockStatement><Statement><IfStatement><Expression><PrimaryExpression><PrimaryPrefix><Name>b</Name></PrimaryPrefix></PrimaryExpression></Expression><Statement><StatementExpression><PrimaryExpression><PrimaryPrefix><Name>methodB</Name></PrimaryPrefix><PrimarySuffix><Arguments/></PrimarySuffix></PrimaryExpression></StatementExpression></Statement></IfStatement></Statement></BlockStatement></Block>";
120 StringReader reader = new StringReader(data);
121 InputSource in = new InputSource(reader);
122
123 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
124 factory.setNamespaceAware(true);
125 Document doc = factory.newDocumentBuilder().parse(in);
126
127 List result = (List) xpath.evaluate(doc);
128 assertEquals(1, result.size());
129
130 }
131
132 }