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 package org.jaxen.function;
63
64 import java.io.IOException;
65 import java.util.List;
66
67 import javax.xml.parsers.DocumentBuilder;
68 import javax.xml.parsers.DocumentBuilderFactory;
69 import javax.xml.parsers.ParserConfigurationException;
70
71 import junit.framework.TestCase;
72
73 import org.jaxen.BaseXPath;
74 import org.jaxen.FunctionCallException;
75 import org.jaxen.JaxenException;
76 import org.jaxen.dom.DOMXPath;
77 import org.w3c.dom.Document;
78 import org.xml.sax.SAXException;
79
80 /***
81 * @author Elliotte Rusty Harold
82 *
83 */
84 public class NotTest extends TestCase {
85
86 private Document doc;
87
88 public void setUp() throws ParserConfigurationException, SAXException, IOException
89 {
90 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
91 factory.setNamespaceAware(true);
92 DocumentBuilder builder = factory.newDocumentBuilder();
93 doc = builder.newDocument();
94 doc.appendChild(doc.createElement("root"));
95 }
96
97
98 public NotTest(String name) {
99 super(name);
100 }
101
102 public void testZeroIsFalse()
103 throws JaxenException {
104
105 BaseXPath xpath = new DOMXPath("not(0)");
106
107 List result = xpath.selectNodes(doc);
108 assertEquals(1, result.size());
109 assertEquals(Boolean.TRUE, result.get(0));
110
111 }
112
113 public void testOneIsTrue()
114 throws JaxenException {
115
116 BaseXPath xpath = new DOMXPath("not(1)");
117
118 List result = xpath.selectNodes(doc);
119 assertEquals(1, result.size());
120 assertEquals(Boolean.FALSE, result.get(0));
121
122 }
123
124 public void testEmptyStringIsFalse()
125 throws JaxenException {
126
127 BaseXPath xpath = new DOMXPath("not('')");
128
129 List result = xpath.selectNodes(doc);
130 assertEquals(1, result.size());
131 assertEquals(Boolean.TRUE, result.get(0));
132
133 }
134
135 public void testNaNIsFalse()
136 throws JaxenException {
137
138 BaseXPath xpath = new DOMXPath("not(0 div 0)");
139 Object result = xpath.evaluate(null);
140 assertEquals(Boolean.TRUE, result);
141
142 }
143
144 public void testNonEmptyStringIsTrue()
145 throws JaxenException {
146
147 BaseXPath xpath = new DOMXPath("not('false')");
148
149 List result = xpath.selectNodes(doc);
150 assertEquals(1, result.size());
151 assertEquals(Boolean.FALSE, result.get(0));
152
153 }
154
155 public void testNotFunctionRequiresOneArgument()
156 throws JaxenException {
157
158 BaseXPath xpath = new DOMXPath("not()");
159
160 try {
161 xpath.selectNodes(doc);
162 fail("Allowed not function with no arguments");
163 }
164 catch (FunctionCallException ex) {
165 assertNotNull(ex.getMessage());
166 }
167
168 }
169
170 public void testNotFunctionRequiresExactlyOneArgument()
171 throws JaxenException {
172
173 BaseXPath xpath = new DOMXPath("not('', '')");
174
175 try {
176 xpath.selectNodes(doc);
177 fail("Allowed boolean function with two arguments");
178 }
179 catch (FunctionCallException ex) {
180 assertNotNull(ex.getMessage());
181 }
182
183 }
184
185 }