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 package org.jaxen.test;
51
52 import java.io.IOException;
53 import java.io.StringReader;
54 import java.util.List;
55
56 import javax.xml.parsers.DocumentBuilderFactory;
57 import javax.xml.parsers.ParserConfigurationException;
58
59 import org.jaxen.JaxenException;
60 import org.jaxen.dom.DOMXPath;
61 import org.w3c.dom.Document;
62 import org.w3c.dom.Element;
63 import org.xml.sax.InputSource;
64 import org.xml.sax.SAXException;
65
66 import junit.framework.TestCase;
67
68 /***
69 * <p>
70 * Test for function context.
71 * </p>
72 *
73 * @author Elliotte Rusty Harold
74 * @version 1.1b9
75 *
76 */
77 public class EqualsTest extends TestCase
78 {
79
80 public void testEqualityAgainstNonExistentNodes()
81 throws JaxenException, ParserConfigurationException {
82
83 DOMXPath xpath = new DOMXPath("/a/b[c = ../d]");
84
85 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
86 factory.setNamespaceAware(true);
87 Document doc = factory.newDocumentBuilder().newDocument();
88 Element root = doc.createElement("a");
89 doc.appendChild(root);
90 Element b = doc.createElement("b");
91 root.appendChild(b);
92 Element c = doc.createElement("c");
93 b.appendChild(c);
94
95 List result = (List) xpath.evaluate(doc);
96 assertEquals(0, result.size());
97
98 }
99
100 public void testOlander()
101 throws JaxenException, SAXException, IOException, ParserConfigurationException {
102
103 DOMXPath xpath = new DOMXPath("//BlockStatement//IfStatement[./Statement = ./ancestor::BlockStatement/following-sibling::BlockStatement//IfStatement/Statement]");
104
105 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>";
106 StringReader reader = new StringReader(data);
107 InputSource in = new InputSource(reader);
108
109 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
110 factory.setNamespaceAware(true);
111 Document doc = factory.newDocumentBuilder().parse(in);
112
113 List result = (List) xpath.evaluate(doc);
114 assertEquals(1, result.size());
115
116 }
117
118 }