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.ByteArrayOutputStream;
53 import java.io.IOException;
54 import java.io.NotSerializableException;
55 import java.io.ObjectOutputStream;
56
57 import javax.xml.parsers.DocumentBuilderFactory;
58 import javax.xml.parsers.ParserConfigurationException;
59
60 import org.jaxen.FunctionContext;
61 import org.jaxen.JaxenException;
62 import org.jaxen.SimpleNamespaceContext;
63 import org.jaxen.UnresolvableException;
64 import org.jaxen.dom.DOMXPath;
65 import org.w3c.dom.Document;
66 import org.w3c.dom.Element;
67
68 import junit.framework.TestCase;
69
70 /***
71 * <p>
72 * Test for function context.
73 * </p>
74 *
75 * @author Elliotte Rusty Harold
76 * @version 1.1b9
77 *
78 */
79 public class FunctionContextTest extends TestCase
80 {
81
82 private Document doc;
83
84 public void setUp() throws ParserConfigurationException {
85
86 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
87 factory.setNamespaceAware(true);
88 doc = factory.newDocumentBuilder().newDocument();
89 Element root = doc.createElementNS("http://www.example.org/", "root");
90 doc.appendChild(root);
91 root.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "http://www.example.org/");
92
93 }
94
95 public void testJAXEN50() throws JaxenException {
96
97 DOMXPath xpath = new DOMXPath("true()");
98
99 SimpleNamespaceContext nsContext = new SimpleNamespaceContext();
100
101 nsContext.addElementNamespaces(xpath.getNavigator(), doc);
102 xpath.setNamespaceContext(nsContext);
103
104 boolean result = xpath.booleanValueOf(doc);
105 assertTrue(result);
106
107 }
108
109 public void testUnresolvableFunction() throws JaxenException {
110
111 DOMXPath xpath = new DOMXPath("nonesuch()");
112
113 try {
114 xpath.evaluate(doc);
115 fail("Evaluated nonexistent function");
116 }
117 catch (UnresolvableException ex) {
118 assertNotNull(ex.getMessage());
119 }
120
121 }
122
123 public void testUnresolvableFunctionExceptionMessage() throws JaxenException {
124
125 DOMXPath xpath = new DOMXPath("nonesuch()");
126
127 try {
128 xpath.evaluate(doc);
129 fail("Evaluated nonexistent function");
130 }
131 catch (UnresolvableException ex) {
132 assertEquals(-1, ex.getMessage().indexOf(':'));
133 }
134
135 }
136
137 public void testGetFunctionContext() throws JaxenException {
138 DOMXPath xpath = new DOMXPath("/root/child");
139 assertNotNull(xpath.getFunctionContext());
140 }
141
142 public void testSerializeFunctionContext() throws JaxenException, IOException {
143
144 DOMXPath xpath = new DOMXPath("/root/child");
145 FunctionContext context = xpath.getFunctionContext();
146 ByteArrayOutputStream out = new ByteArrayOutputStream();
147 ObjectOutputStream oout = new ObjectOutputStream(out);
148 try {
149 oout.writeObject(context);
150 fail("serialized function context");
151 }
152 catch (NotSerializableException ex) {
153 assertNotNull(ex.getMessage());
154 }
155
156 }
157
158 }