Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / fast / xpath / py-dom-xpath / expressions.html
blob1c4df3082d9c16ca82afc1d77d9b0dccf9019015
1 <html>
2 <head>
3 <script src="../../../resources/js-test.js"></script>
4 <script src="../xpath-test-pre.js"></script>
5 </head>
6 <body>
7 <div id="console"></div>
9 <script>
10 var doc = (new DOMParser).parseFromString(
11 '<doc>' +
12 '<item id="1" />' +
13 '<item id="2" />' +
14 '<item id="3" />' +
15 '<item id="4" />' +
16 '<item id="5" />' +
17 '</doc>',
18 'application/xml');
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(
35 '<doc>' +
36 '<item id="1" />' +
37 '<item id="2" />' +
38 '<item id="3" />' +
39 '<item id="4" />' +
40 '<item id="5" />' +
41 '<item id="6" />' +
42 '<item id="7" />' +
43 '<item id="8" />' +
44 '<item id="9" />' +
45 '</doc>',
46 'application/xml');
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)");
66 // Added for WebKit.
67 test(doc, doc.documentElement, '(1)', 1);
68 test(doc, doc.documentElement, '((1 + 1))', 2);
70 var doc = (new DOMParser).parseFromString(
71 '<doc>' +
72 ' <set id="1">' +
73 ' <item>1</item>' +
74 ' <item>2</item>' +
75 ' <item>3</item>' +
76 ' <item>4</item>' +
77 ' </set>' +
78 ' <set id="2">' +
79 ' <item>5</item>' +
80 ' <item>6</item>' +
81 ' <item>7</item>' +
82 ' <item>8</item>' +
83 ' </set>' +
84 ' <set id="3">' +
85 ' <item>0</item>' +
86 ' <item>3</item>' +
87 ' <item>6</item>' +
88 ' <item>9</item>' +
89 ' </set>' +
90 ' <set id="4">' +
91 ' <item>42.0</item>' +
92 ' </set>' +
93 '</doc>',
94 'application/xml');
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);
141 </script>
142 </body>
143 </html>