3 <script src=
"../../../resources/js-test.js"></script>
4 <script src=
"../xpath-test-pre.js"></script>
7 <div id=
"console"></div>
10 var doc
= (new DOMParser
).parseFromString(
20 var ROOT
= doc
.documentElement
;
21 var ITEM1
= ROOT
.firstChild
;
22 var ITEM2
= ITEM1
.nextSibling
;
23 var ITEM3
= ITEM2
.nextSibling
;
24 var ITEM4
= ITEM3
.nextSibling
;
26 test(doc
, doc
.documentElement
, '//item[@id >= 2 and @id <= "4"]', [ITEM2
, ITEM3
, ITEM4
]);
27 test(doc
, doc
.documentElement
, '//item[@id >= 2 and @id <= 3]', [ITEM2
, ITEM3
]);
28 shouldThrow('doc.evaluate("position(1)", doc.documentElement, null, XPathResult.ANY_TYPE, null)');
29 shouldThrow('doc.evaluate("not()", doc.documentElement, null, XPathResult.ANY_TYPE, null)');
30 test(doc
, doc
, "string-length(100)", 3);
31 shouldThrow('doc.evaluate("count(100)", doc.documentElement, null, XPathResult.ANY_TYPE, null)');
32 shouldThrow('doc.evaluate("adumbrate()", doc.documentElement, null, XPathResult.ANY_TYPE, null)');
34 var doc
= (new DOMParser
).parseFromString(
48 var ROOT
= doc
.documentElement
;
49 var ITEM1
= ROOT
.firstChild
;
50 var ITEM2
= ITEM1
.nextSibling
;
51 var ITEM3
= ITEM2
.nextSibling
;
52 var ITEM4
= ITEM3
.nextSibling
;
53 var ITEM5
= ITEM4
.nextSibling
;
54 var ITEM6
= ITEM5
.nextSibling
;
55 var ITEM7
= ITEM6
.nextSibling
;
56 var ITEM8
= ITEM7
.nextSibling
;
57 var ITEM9
= ITEM8
.nextSibling
;
59 test(doc
, doc
.documentElement
, '//item[@id mod 2 = 0] | //item[@id mod 3 = 0]', [ITEM2
, ITEM3
, ITEM4
, ITEM6
, ITEM8
, ITEM9
]);
60 shouldThrow('doc.evaluate("//item | 42", doc.documentElement, null, XPathResult.ANY_TYPE, null)');
61 shouldThrow('doc.evaluate("/doc/(item[@id = 2] | item[@id = 6])/@id", doc.documentElement, null, XPathResult.ANY_TYPE, null)'); // This test doesn't throw in py-dom-path, which is a bug.
62 shouldThrow("doc.evaluate('\"monty\"/anaconda', doc.documentElement, null, XPathResult.ANY_TYPE, null)");
63 shouldThrow("doc.evaluate('/doc/string(item[@id = 2])/@id', doc.documentElement, null, XPathResult.ANY_TYPE, null)");
64 shouldThrow("doc.evaluate('(1)[1]', doc.documentElement, null, XPathResult.ANY_TYPE, null)");
67 test(doc
, doc
.documentElement
, '(1)', 1);
68 test(doc
, doc
.documentElement
, '((1 + 1))', 2);
70 var doc
= (new DOMParser
).parseFromString(
91 ' <item>42.0</item>' +
96 test(doc
, doc
.documentElement
, '1 or 1', true);
97 test(doc
, doc
.documentElement
, '1 or 0', true);
98 test(doc
, doc
.documentElement
, '0 or 1', true);
99 test(doc
, doc
.documentElement
, '0 or 0', false);
100 test(doc
, doc
.documentElement
, '1 and 1', true);
101 test(doc
, doc
.documentElement
, '1 and 0', false);
102 test(doc
, doc
.documentElement
, '0 and 1', false);
103 test(doc
, doc
.documentElement
, '0 and 0', false);
104 test(doc
, doc
.documentElement
, '(//set[@id=1]/*) = (//set[@id=3]/*)', true);
105 test(doc
, doc
.documentElement
, '(//set[@id=1]/*) = (//set[@id=2]/*)', false);
106 test(doc
, doc
.documentElement
, '(//set[@id=1]/*) != (//set[@id=1]/*)', true);
107 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) != (//set[@id=4]/*)', false);
108 test(doc
, doc
.documentElement
, '(//set[@id=1]/*) <= (//set[@id=2]/*)', true);
109 test(doc
, doc
.documentElement
, '(//set[@id=2]/*) <= (//set[@id=1]/*)', false);
110 test(doc
, doc
.documentElement
, '(//set[@id=1]/*) < (//set[@id=2]/*)', true);
111 test(doc
, doc
.documentElement
, '(//set[@id=2]/*) < (//set[@id=1]/*)', false);
112 test(doc
, doc
.documentElement
, '(//set[@id=2]/*) > (//set[@id=1]/*)', true);
113 test(doc
, doc
.documentElement
, '(//set[@id=1]/*) > (//set[@id=2]/*)', false);
114 test(doc
, doc
.documentElement
, '(//set[@id=2]/*) >= (//set[@id=1]/*)', true);
115 test(doc
, doc
.documentElement
, '(//set[@id=1]/*) >= (//set[@id=2]/*)', false);
116 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) = (1 = 1)', true);
117 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) = (1 = 0)', false);
118 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) != (1 = 0)', true);
119 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) != (1 = 1)', false);
120 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) = 42', true);
121 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) = 43', false);
122 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) != 43', true);
123 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) != 42', false);
124 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) = "42.0"', true);
125 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) = "42"', false);
126 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) != "42"', true);
127 test(doc
, doc
.documentElement
, '(//set[@id=4]/*) != "42.0"', false);
128 test(doc
, doc
.documentElement
, '"a" <= "a"', false);
129 test(doc
, doc
.documentElement
, '"a" <= "b"', false);
130 test(doc
, doc
.documentElement
, '"a" >= "a"', false);
131 test(doc
, doc
.documentElement
, '"b" > "a"', false);
132 test(doc
, doc
.documentElement
, '1 <= 1', true);
133 test(doc
, doc
.documentElement
, '2 <= 1', false);
134 test(doc
, doc
.documentElement
, '1 < 2', true);
135 test(doc
, doc
.documentElement
, '1 < 1', false);
136 test(doc
, doc
.documentElement
, '1 >= 1', true);
137 test(doc
, doc
.documentElement
, '1 >= 2', false);
138 test(doc
, doc
.documentElement
, '2 > 1', true);
139 test(doc
, doc
.documentElement
, '1 > 1', false);