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