node-set-tree-order.html (1196B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>Tree order of node sets during evaluation</title> 5 <link rel="author" title="Simon Wülker" href="mailto:simon.wuelker@arcor.de"> 6 <link rel="help" href="https://github.com/servo/servo/issues/40435"> 7 <script src="/resources/testharness.js"></script> 8 <script src="/resources/testharnessreport.js"></script> 9 </head> 10 <body> 11 <div id="container"> 12 <span></span> 13 <p id="p"></p> 14 </div> 15 <script> 16 function toArray(result) { 17 var a = []; 18 while (true) { 19 var node = result.iterateNext(); 20 if (node === null) break; 21 a.push(node); 22 } 23 return a; 24 } 25 26 let container = document.getElementById("container"); 27 test(() => { 28 // If the result of "(./p | ./span)" is not in tree order then "last()" will filter the wrong element, 29 // causing the span to be returned. 30 31 let result = document.evaluate("(./p | ./span)[last()]", container, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); 32 assert_array_equals(toArray(result), [document.getElementById("p")]) 33 }, "Temporary node sets created during evaluation must be in tree order"); 34 </script> 35 </body> 36 </html>