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