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 javax.xml.parsers.DocumentBuilder;
51 import javax.xml.parsers.DocumentBuilderFactory;
52 import javax.xml.parsers.ParserConfigurationException;
53
54 import junit.framework.TestCase;
55
56 import org.jaxen.JaxenException;
57 import org.jaxen.XPath;
58 import org.jaxen.dom.DOMXPath;
59 import org.w3c.dom.Document;
60
61
62
63
64
65 public class ArithmeticTest extends TestCase {
66
67 private Document doc;
68
69 public void setUp() throws ParserConfigurationException
70 {
71 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
72 factory.setNamespaceAware(true);
73 DocumentBuilder builder = factory.newDocumentBuilder();
74 doc = builder.newDocument();
75 org.w3c.dom.Element a = doc.createElementNS("", "a");
76 doc.appendChild(a);
77 }
78
79
80 public ArithmeticTest(String name) {
81 super(name);
82 }
83
84 public void testNumbersThatBeginWithADecimalPoint()
85 throws JaxenException {
86 XPath xpath = new DOMXPath(".5 > .4");
87 Boolean result = (Boolean) xpath.evaluate(doc);
88 assertTrue(result.booleanValue());
89
90 }
91
92
93 public void testNumbersThatBeginWithADecimalPoint2()
94 throws JaxenException {
95
96 XPath xpath = new DOMXPath(".3 <= .4 <= 1.1");
97 Boolean result = (Boolean) xpath.evaluate(doc);
98 assertTrue(result.booleanValue());
99
100 }
101
102 public void testLeftAssociativityOfLessThanOrEqual()
103 throws JaxenException {
104
105 XPath xpath = new DOMXPath(".3 <= .4 <= 0.9");
106 Boolean result = (Boolean) xpath.evaluate(doc);
107 assertFalse(result.booleanValue());
108
109 }
110
111
112 public void testNegativeZeroNotEqualsZero()
113 throws JaxenException {
114
115 XPath xpath = new DOMXPath("0 != -0");
116 Boolean result = (Boolean) xpath.evaluate(doc);
117 assertFalse(result.booleanValue());
118
119 }
120
121
122 public void testNegativeZeroEqualsZero()
123 throws JaxenException {
124
125 XPath xpath = new DOMXPath("0 = -0");
126 Boolean result = (Boolean) xpath.evaluate(doc);
127 assertTrue(result.booleanValue());
128
129 }
130
131
132 public void testZeroNotGreaterThanNegativeZero()
133 throws JaxenException {
134
135 XPath xpath = new DOMXPath("0 > -0");
136 Boolean result = (Boolean) xpath.evaluate(doc);
137 assertFalse(result.booleanValue());
138
139 }
140
141 public void testZeroGreaterThanOrEqualsToNegativeZero()
142 throws JaxenException {
143
144 XPath xpath = new DOMXPath("0 >= -0");
145 Boolean result = (Boolean) xpath.evaluate(doc);
146 assertTrue(result.booleanValue());
147
148 }
149
150 public void testZeroLessThanOrEqualToNegativeZero()
151 throws JaxenException {
152
153 XPath xpath = new DOMXPath("0 <= -0");
154 Boolean result = (Boolean) xpath.evaluate(doc);
155 assertTrue(result.booleanValue());
156
157 }
158
159
160 public void testNegativeZeroNotLessThanZero()
161 throws JaxenException {
162
163 XPath xpath = new DOMXPath("-0 < 0");
164 Boolean result = (Boolean) xpath.evaluate(doc);
165 assertFalse(result.booleanValue());
166
167 }
168
169
170 public void testNaNNotEqualsString()
171 throws JaxenException {
172
173 XPath xpath = new DOMXPath("(0.0 div 0.0) != 'foo'");
174 Boolean result = (Boolean) xpath.evaluate(doc);
175 assertTrue(result.booleanValue());
176
177 }
178
179
180 public void testNaNEqualsString()
181 throws JaxenException {
182
183 XPath xpath = new DOMXPath("(0.0 div 0.0) = 'foo'");
184 Boolean result = (Boolean) xpath.evaluate(doc);
185 assertFalse(result.booleanValue());
186
187 }
188
189 public void testEqualityPrecedence()
190 throws JaxenException {
191
192 XPath xpath = new DOMXPath("1.5 = 2.3 = 2.3");
193 Boolean result = (Boolean) xpath.evaluate(doc);
194 assertFalse(result.booleanValue());
195
196 }
197
198
199 }