summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/dom/ranges/Range-adopt-test.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/dom/ranges/Range-adopt-test.html')
-rw-r--r--testing/web-platform/tests/dom/ranges/Range-adopt-test.html52
1 files changed, 52 insertions, 0 deletions
diff --git a/testing/web-platform/tests/dom/ranges/Range-adopt-test.html b/testing/web-platform/tests/dom/ranges/Range-adopt-test.html
new file mode 100644
index 0000000000..3735fc38fd
--- /dev/null
+++ b/testing/web-platform/tests/dom/ranges/Range-adopt-test.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script>
+function createRangeWithUnparentedContainerOfSingleElement() {
+ const range = document.createRange();
+ const container = document.createElement("container");
+ const element = document.createElement("element");
+ container.appendChild(element);
+ range.selectNode(element);
+ return range;
+}
+function nestRangeInOuterContainer(range) {
+ range.startContainer.ownerDocument.createElement("outer").appendChild(range.startContainer);
+}
+function moveNodeToNewlyCreatedDocumentWithAppendChild(node) {
+ document.implementation.createDocument(null, null).appendChild(node);
+}
+
+//Tests removing only element
+test(()=>{
+ const range = createRangeWithUnparentedContainerOfSingleElement();
+ range.startContainer.removeChild(range.startContainer.firstChild);
+ assert_equals(range.endOffset, 0);
+}, "Range in document: Removing the only element in the range must collapse the range");
+
+
+//Tests removing only element after parented container moved to another document
+test(()=>{
+ const range = createRangeWithUnparentedContainerOfSingleElement();
+ nestRangeInOuterContainer(range);
+ moveNodeToNewlyCreatedDocumentWithAppendChild(range.startContainer);
+ assert_equals(range.endOffset, 0);
+}, "Parented range container moved to another document with appendChild: Moving the element to the other document must collapse the range");
+
+//Tests removing only element after parentless container moved oo another document
+test(()=>{
+ const range = createRangeWithUnparentedContainerOfSingleElement();
+ moveNodeToNewlyCreatedDocumentWithAppendChild(range.startContainer);
+ range.startContainer.removeChild(range.startContainer.firstChild);
+ assert_equals(range.endOffset, 0);
+}, "Parentless range container moved to another document with appendChild: Removing the only element in the range must collapse the range");
+
+//Tests removing only element after parentless container of container moved to another document
+test(()=>{
+ const range = createRangeWithUnparentedContainerOfSingleElement();
+ nestRangeInOuterContainer(range);
+ moveNodeToNewlyCreatedDocumentWithAppendChild(range.startContainer.parentNode);
+ range.startContainer.removeChild(range.startContainer.firstChild);
+ assert_equals(range.endOffset, 0);
+}, "Range container's parentless container moved to another document with appendChild: Removing the only element in the range must collapse the range");
+</script>