OLD | NEW |
1 <!doctype html> | 1 <!doctype html> |
2 <title>XPath tests</title> | 2 <title>XPath tests</title> |
3 <script src='/resources/testharness.js'></script> | 3 <script src='/resources/testharness.js'></script> |
4 <script src='/resources/testharnessreport.js'></script> | 4 <script src='/resources/testharnessreport.js'></script> |
5 <script> | 5 <script> |
6 setup({ explicit_done: true }); | 6 setup({ explicit_done: true }); |
7 | 7 |
8 function find_child_element(context, element) { | 8 function find_child_element(context, element) { |
9 for (var i = 0; i < context.childNodes.length; i++) { | 9 for (var i = 0; i < context.childNodes.length; i++) { |
10 var child = context.childNodes[i]; | 10 var child = context.childNodes[i]; |
11 if (child.nodeType === Node.ELEMENT_NODE && child.tagName === element) | 11 if (child.nodeType === Node.ELEMENT_NODE && child.tagName === element) |
12 return child; | 12 return child; |
13 } | 13 } |
14 } | 14 } |
15 | 15 |
16 function xpath_test(test_el) { | 16 function xpath_test(test_el) { |
17 /* note this func adopts the tree! */ | 17 /* note this func adopts the tree! */ |
18 var new_doc = document.implementation.createDocument("", ""); | 18 var new_doc = document.implementation.createDocument("", ""); |
19 var xpath = find_child_element(test_el, "xpath"); | 19 var xpath = find_child_element(test_el, "xpath"); |
| 20 var result = find_child_element(test_el, "result"); |
| 21 var namespace = find_child_element(result, "namespace"); |
| 22 var localname = find_child_element(result, "localname"); |
| 23 var nth = find_child_element(result, "nth"); |
20 var tree = find_child_element(test_el, "tree"); | 24 var tree = find_child_element(test_el, "tree"); |
21 var actual_tree = new_doc.adoptNode(tree.firstElementChild); | 25 var actual_tree = new_doc.adoptNode(tree.firstElementChild); |
22 new_doc.appendChild(actual_tree); | 26 new_doc.appendChild(actual_tree); |
23 test(function() { | 27 test(function() { |
24 var result = new_doc.evaluate(xpath.textContent, // expression | 28 var result = new_doc.evaluate(xpath.textContent, // expression |
25 actual_tree, // context node | 29 actual_tree, // context node |
26 new_doc.createNSResolver(actual_tree), // reso
lver | 30 new_doc.createNSResolver(actual_tree), // reso
lver |
27 XPathResult.ANY_TYPE, // type | 31 XPathResult.ANY_TYPE, // type |
28 null); // result | 32 null); // result |
29 var matched = []; | 33 var matched = []; |
30 var cur; | 34 var cur; |
31 while ((cur = result.iterateNext()) !== null) { | 35 while ((cur = result.iterateNext()) !== null) { |
32 matched.push(cur); | 36 matched.push(cur); |
33 } | 37 } |
34 assert_equals(matched.length, 1, "Should match one node"); | 38 assert_equals(matched.length, 1, "Should match one node"); |
| 39 var similar = new_doc.getElementsByTagNameNS(namespace.textContent, |
| 40 localname.textContent); |
| 41 assert_equals(matched[0], similar[nth.textContent]); |
35 }); | 42 }); |
36 } | 43 } |
37 | 44 |
38 var xhr = new XMLHttpRequest(); | 45 var xhr = new XMLHttpRequest(); |
39 xhr.open("GET", "xml_xpath_tests.xml"); | 46 xhr.open("GET", "xml_xpath_tests.xml"); |
40 xhr.onload = function(e) { | 47 xhr.onload = function(e) { |
41 var tests = xhr.responseXML.documentElement; | 48 var tests = xhr.responseXML.documentElement; |
42 for (var i = 0; i < tests.childNodes.length; i++) { | 49 for (var i = 0; i < tests.childNodes.length; i++) { |
43 var child = tests.childNodes[i]; | 50 var child = tests.childNodes[i]; |
44 if (child.nodeType === Node.ELEMENT_NODE) { | 51 if (child.nodeType === Node.ELEMENT_NODE) { |
45 xpath_test(child); | 52 xpath_test(child); |
46 } | 53 } |
47 } | 54 } |
48 done(); | 55 done(); |
49 }; | 56 }; |
50 xhr.send(); | 57 xhr.send(); |
51 </script> | 58 </script> |
OLD | NEW |