Range-intersectsNode.html (2504B)
1 <!doctype html> 2 <title>Range.intersectsNode() tests</title> 3 <link rel="author" title="Aryeh Gregor" href=ayg@aryeh.name> 4 <meta name=timeout content=long> 5 <div id=log></div> 6 <script src=/resources/testharness.js></script> 7 <script src=/resources/testharnessreport.js></script> 8 <script src=../common.js></script> 9 <script> 10 "use strict"; 11 12 // Will be filled in on the first run for that range 13 var testRangesCached = []; 14 15 for (var i = 0; i < testNodes.length; i++) { 16 var node = eval(testNodes[i]); 17 18 for (var j = 0; j < testRanges.length; j++) { 19 test(function() { 20 if (testRangesCached[j] === undefined) { 21 try { 22 testRangesCached[j] = rangeFromEndpoints(eval(testRanges[i])); 23 } catch(e) { 24 testRangesCached[j] = null; 25 } 26 } 27 assert_not_equals(testRangesCached[j], null, 28 "Setting up the range failed"); 29 30 var range = testRangesCached[j].cloneRange(); 31 32 // "If node's root is different from the context object's root, 33 // return false and terminate these steps." 34 if (furthestAncestor(node) !== furthestAncestor(range.startContainer)) { 35 assert_equals(range.intersectsNode(node), false, 36 "Must return false if node and range have different roots"); 37 return; 38 } 39 40 // "Let parent be node's parent." 41 var parent_ = node.parentNode; 42 43 // "If parent is null, return true and terminate these steps." 44 if (!parent_) { 45 assert_equals(range.intersectsNode(node), true, 46 "Must return true if node's parent is null"); 47 return; 48 } 49 50 // "Let offset be node's index." 51 var offset = indexOf(node); 52 53 // "If (parent, offset) is before end and (parent, offset + 1) is 54 // after start, return true and terminate these steps." 55 if (getPosition(parent_, offset, range.endContainer, range.endOffset) === "before" 56 && getPosition(parent_, offset + 1, range.startContainer, range.startOffset) === "after") { 57 assert_equals(range.intersectsNode(node), true, 58 "Must return true if (parent, offset) is before range end and (parent, offset + 1) is after range start"); 59 return; 60 } 61 62 // "Return false." 63 assert_equals(range.intersectsNode(node), false, 64 "Must return false if (parent, offset) is not before range end or (parent, offset + 1) is not after range start"); 65 }, "Node " + i + " " + testNodes[i] + ", range " + j + " " + testRanges[j]); 66 } 67 } 68 69 testDiv.style.display = "none"; 70 </script>