summaryrefslogtreecommitdiffstats
path: root/LayoutTests/fast/xpath/4XPath/Core/test_boolean_expr.html
blob: 32c163766577c3625ade3a6ef0f80ab60152a5ee (plain)
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
63
64
65
66
67
68
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<link rel="stylesheet" href="../../../js/resources/js-test-style.css">
<script src="../../../js/resources/js-test-pre.js"></script>
</head>
<body>
<div id="console"></div>

<script>

doc = (new DOMParser).parseFromString("<root num0='0' num2='2' num4='4'><egg1>egg1</egg1><egg2>egg2</egg2></root>", "application/xml");

shouldBe('doc.evaluate("3.14 < -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("3.14 <= -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("3.14 > -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("3.14 >= 3.14", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("number(\'NaN\') < -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("number(\'NaN\') <= -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("number(\'NaN\') > -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("number(\'NaN\') >= 3.14", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("/root/@num2 <= /root/@num2", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("/root/@num2 >= /root/@num2", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("/root/@num0 <= /root/@num2", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("/root/@num0 >= /root/@num2", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("/root/@num4 <= /root/@num2", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("/root/@num4 >= /root/@num2", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');

shouldBe('doc.evaluate("\'3.14\' = \'3.14\'", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("\'3.14\' = \'Hi\'", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("\'3.14\' != -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("number(\'NaN\') = \'Hi\'", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("number(\'NaN\') != -4", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("number(\'NaN\')  = number(\'NaN\')", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("number(\'NaN\') != number(\'NaN\')", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("/empty  = true()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("/empty != true()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("/empty  = false()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("/empty != false()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("/empty  = /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("/empty != /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("/root/*[1]  = /empty", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("/root/*[1] != /empty", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("/root/*[1]  = /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("/root/*[1] != /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("\'egg1\'  = /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("\'egg1\' != /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("\'egg2\'  = /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("\'egg2\' != /root/*[1]", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("\'egg1\'  = /root/*", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
// Yeah, non-intuitive, but true acc to XPath spec 3.4
shouldBe('doc.evaluate("\'egg1\' != /root/*", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');

shouldBe('doc.evaluate("true() and true()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("true() and false()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("false() and true()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("false() and false()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');
shouldBe('doc.evaluate("true() or false()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("false() or true()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("true() or true()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'true');
shouldBe('doc.evaluate("false() or false()", doc, null, XPathResult.BOOLEAN_TYPE, null).booleanValue', 'false');

var successfullyParsed = true;

</script>
<script src="../../../js/resources/js-test-post.js"></script>
</body>
</html>