test_boolean_expr.html revision 5f90462bbf4efb0ac7bb65a852d5559d0ab30f0b
1<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2<html>
3<head>
4<link rel="stylesheet" href="/js/resources/js-test-style.css">
5<script src="/js/resources/js-test-pre.js"></script>
6</head>
7<body>
8<div id="console"></div>
9
10<script>
11
12doc = (new DOMParser).parseFromString("<root num0='0' num2='2' num4='4'><egg1>egg1</egg1><egg2>egg2</egg2></root>", "application/xml");
13
14shouldBe('doc.evaluate("3.14 < -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
15shouldBe('doc.evaluate("3.14 <= -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
16shouldBe('doc.evaluate("3.14 > -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
17shouldBe('doc.evaluate("3.14 >= 3.14", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
18shouldBe('doc.evaluate("number(\'NaN\') < -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
19shouldBe('doc.evaluate("number(\'NaN\') <= -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
20shouldBe('doc.evaluate("number(\'NaN\') > -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
21shouldBe('doc.evaluate("number(\'NaN\') >= 3.14", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
22shouldBe('doc.evaluate("/root/@num2 <= /root/@num2", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
23shouldBe('doc.evaluate("/root/@num2 >= /root/@num2", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
24shouldBe('doc.evaluate("/root/@num0 <= /root/@num2", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
25shouldBe('doc.evaluate("/root/@num0 >= /root/@num2", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
26shouldBe('doc.evaluate("/root/@num4 <= /root/@num2", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
27shouldBe('doc.evaluate("/root/@num4 >= /root/@num2", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
28
29shouldBe('doc.evaluate("\'3.14\' = \'3.14\'", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
30shouldBe('doc.evaluate("\'3.14\' = \'Hi\'", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
31shouldBe('doc.evaluate("\'3.14\' != -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
32shouldBe('doc.evaluate("number(\'NaN\') = \'Hi\'", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
33shouldBe('doc.evaluate("number(\'NaN\') != -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
34shouldBe('doc.evaluate("number(\'NaN\')  = number(\'NaN\')", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
35shouldBe('doc.evaluate("number(\'NaN\') != number(\'NaN\')", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
36shouldBe('doc.evaluate("/empty  = true()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
37shouldBe('doc.evaluate("/empty != true()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
38shouldBe('doc.evaluate("/empty  = false()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
39shouldBe('doc.evaluate("/empty != false()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
40shouldBe('doc.evaluate("/empty  = /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
41shouldBe('doc.evaluate("/empty != /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
42shouldBe('doc.evaluate("/root/*[1]  = /empty", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
43shouldBe('doc.evaluate("/root/*[1] != /empty", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
44shouldBe('doc.evaluate("/root/*[1]  = /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
45shouldBe('doc.evaluate("/root/*[1] != /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
46shouldBe('doc.evaluate("\'egg1\'  = /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
47shouldBe('doc.evaluate("\'egg1\' != /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
48shouldBe('doc.evaluate("\'egg2\'  = /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
49shouldBe('doc.evaluate("\'egg2\' != /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
50shouldBe('doc.evaluate("\'egg1\'  = /root/*", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
51// Yeah, non-intuitive, but true acc to XPath spec 3.4
52shouldBe('doc.evaluate("\'egg1\' != /root/*", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
53
54shouldBe('doc.evaluate("true() and true()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
55shouldBe('doc.evaluate("true() and false()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
56shouldBe('doc.evaluate("false() and true()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
57shouldBe('doc.evaluate("false() and false()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
58shouldBe('doc.evaluate("true() or false()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
59shouldBe('doc.evaluate("false() or true()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
60shouldBe('doc.evaluate("true() or true()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
61shouldBe('doc.evaluate("false() or false()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
62
63var successfullyParsed = true;
64
65</script>
66<script src="/js/resources/js-test-post.js"></script>
67</body>
68</html>
69