tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

xml_xpath_runner.html (2125B)


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