Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(351)

Side by Side Diff: third_party/WebKit/LayoutTests/imported/web-platform-tests/dom/ranges/Range-cloneRange.html

Issue 1529523002: Import dom/ from web-platform-tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tweak W3CImportExpectations Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <!doctype html>
2 <title>Range.cloneRange() and document.createRange() 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 testCloneRange(rangeEndpoints) {
13 var range;
14 if (rangeEndpoints == "detached") {
15 range = document.createRange();
16 range.detach();
17 var clonedRange = range.cloneRange();
18 assert_equals(clonedRange.startContainer, range.startContainer,
19 "startContainers must be equal after cloneRange()");
20 assert_equals(clonedRange.startOffset, range.startOffset,
21 "startOffsets must be equal after cloneRange()");
22 assert_equals(clonedRange.endContainer, range.endContainer,
23 "endContainers must be equal after cloneRange()");
24 assert_equals(clonedRange.endOffset, range.endOffset,
25 "endOffsets must be equal after cloneRange()");
26 return;
27 }
28
29 // Have to account for Ranges involving Documents! We could just create
30 // the Range from the current document unconditionally, but some browsers
31 // (WebKit) don't implement setStart() and setEnd() per spec and will throw
32 // spurious exceptions at the time of this writing. No need to mask other
33 // bugs.
34 var ownerDoc = rangeEndpoints[0].nodeType == Node.DOCUMENT_NODE
35 ? rangeEndpoints[0]
36 : rangeEndpoints[0].ownerDocument;
37 range = ownerDoc.createRange();
38 // Here we throw in some createRange() tests, because why not. Have to
39 // test it someplace.
40 assert_equals(range.startContainer, ownerDoc,
41 "doc.createRange() must create Range whose startContainer is doc");
42 assert_equals(range.endContainer, ownerDoc,
43 "doc.createRange() must create Range whose endContainer is doc");
44 assert_equals(range.startOffset, 0,
45 "doc.createRange() must create Range whose startOffset is 0");
46 assert_equals(range.endOffset, 0,
47 "doc.createRange() must create Range whose endOffset is 0");
48
49 range.setStart(rangeEndpoints[0], rangeEndpoints[1]);
50 range.setEnd(rangeEndpoints[2], rangeEndpoints[3]);
51
52 // Make sure we bail out now if setStart or setEnd are buggy, so it doesn't
53 // create misleading failures later.
54 assert_equals(range.startContainer, rangeEndpoints[0],
55 "Sanity check on setStart()");
56 assert_equals(range.startOffset, rangeEndpoints[1],
57 "Sanity check on setStart()");
58 assert_equals(range.endContainer, rangeEndpoints[2],
59 "Sanity check on setEnd()");
60 assert_equals(range.endOffset, rangeEndpoints[3],
61 "Sanity check on setEnd()");
62
63 var clonedRange = range.cloneRange();
64
65 assert_equals(clonedRange.startContainer, range.startContainer,
66 "startContainers must be equal after cloneRange()");
67 assert_equals(clonedRange.startOffset, range.startOffset,
68 "startOffsets must be equal after cloneRange()");
69 assert_equals(clonedRange.endContainer, range.endContainer,
70 "endContainers must be equal after cloneRange()");
71 assert_equals(clonedRange.endOffset, range.endOffset,
72 "endOffsets must be equal after cloneRange()");
73
74 // Make sure that modifying one doesn't affect the other.
75 var testNode1 = ownerDoc.createTextNode("testing");
76 var testNode2 = ownerDoc.createTextNode("testing with different length");
77
78 range.setStart(testNode1, 1);
79 range.setEnd(testNode1, 2);
80 assert_equals(clonedRange.startContainer, rangeEndpoints[0],
81 "Modifying a Range must not modify its clone's startContainer");
82 assert_equals(clonedRange.startOffset, rangeEndpoints[1],
83 "Modifying a Range must not modify its clone's startOffset");
84 assert_equals(clonedRange.endContainer, rangeEndpoints[2],
85 "Modifying a Range must not modify its clone's endContainer");
86 assert_equals(clonedRange.endOffset, rangeEndpoints[3],
87 "Modifying a Range must not modify its clone's endOffset");
88
89 clonedRange.setStart(testNode2, 3);
90 clonedRange.setStart(testNode2, 4);
91
92 assert_equals(range.startContainer, testNode1,
93 "Modifying a clone must not modify the original Range's startContainer");
94 assert_equals(range.startOffset, 1,
95 "Modifying a clone must not modify the original Range's startOffset");
96 assert_equals(range.endContainer, testNode1,
97 "Modifying a clone must not modify the original Range's endContainer");
98 assert_equals(range.endOffset, 2,
99 "Modifying a clone must not modify the original Range's endOffset");
100 }
101
102 var tests = [];
103 for (var i = 0; i < testRanges.length; i++) {
104 tests.push([
105 "Range " + i + " " + testRanges[i],
106 eval(testRanges[i])
107 ]);
108 }
109 generate_tests(testCloneRange, tests);
110
111 testDiv.style.display = "none";
112 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698