Range-collapse.html (2065B)
1 <!doctype html> 2 <title>Range.collapse() and .collapsed 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 function testCollapse(rangeEndpoints, toStart) { 13 // Have to account for Ranges involving Documents! 14 var ownerDoc = rangeEndpoints[0].nodeType == Node.DOCUMENT_NODE 15 ? rangeEndpoints[0] 16 : rangeEndpoints[0].ownerDocument; 17 var range = ownerDoc.createRange(); 18 range.setStart(rangeEndpoints[0], rangeEndpoints[1]); 19 range.setEnd(rangeEndpoints[2], rangeEndpoints[3]); 20 21 var expectedContainer = toStart ? range.startContainer : range.endContainer; 22 var expectedOffset = toStart ? range.startOffset : range.endOffset; 23 24 assert_equals(range.collapsed, range.startContainer == range.endContainer 25 && range.startOffset == range.endOffset, 26 "collapsed must be true if and only if the start and end are equal"); 27 28 if (toStart === undefined) { 29 range.collapse(); 30 } else { 31 range.collapse(toStart); 32 } 33 34 assert_equals(range.startContainer, expectedContainer, 35 "Wrong startContainer"); 36 assert_equals(range.endContainer, expectedContainer, 37 "Wrong endContainer"); 38 assert_equals(range.startOffset, expectedOffset, 39 "Wrong startOffset"); 40 assert_equals(range.endOffset, expectedOffset, 41 "Wrong endOffset"); 42 assert_true(range.collapsed, 43 ".collapsed must be set after .collapsed()"); 44 } 45 46 var tests = []; 47 for (var i = 0; i < testRanges.length; i++) { 48 tests.push([ 49 "Range " + i + " " + testRanges[i] + ", toStart true", 50 eval(testRanges[i]), 51 true 52 ]); 53 tests.push([ 54 "Range " + i + " " + testRanges[i] + ", toStart false", 55 eval(testRanges[i]), 56 false 57 ]); 58 tests.push([ 59 "Range " + i + " " + testRanges[i] + ", toStart omitted", 60 eval(testRanges[i]), 61 undefined 62 ]); 63 } 64 generate_tests(testCollapse, tests); 65 66 testDiv.style.display = "none"; 67 </script>