| 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 |