diff options
Diffstat (limited to 'testing/web-platform/tests/selection/selectAllChildren.html')
-rw-r--r-- | testing/web-platform/tests/selection/selectAllChildren.html | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/testing/web-platform/tests/selection/selectAllChildren.html b/testing/web-platform/tests/selection/selectAllChildren.html new file mode 100644 index 0000000000..9a472a4b2f --- /dev/null +++ b/testing/web-platform/tests/selection/selectAllChildren.html @@ -0,0 +1,64 @@ +<!doctype html> +<title>Selection.selectAllChildren tests</title> +<meta name="timeout" content="long"> +<div id=log></div> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script src=common.js></script> +<script> +"use strict"; + +testRanges.unshift("[]"); + +for (var i = 0; i < testRanges.length; i++) { + var endpoints = eval(testRanges[i]); + + for (var j = 0; j < testNodes.length; j++) { + var node = eval(testNodes[j]); + + test(function() { + setSelectionForwards(endpoints); + var originalRange = getSelection().rangeCount + ? getSelection().getRangeAt(0) + : null; + + if (node.nodeType == Node.DOCUMENT_TYPE_NODE) { + assert_throws_dom("INVALID_NODE_TYPE_ERR", function() { + selection.selectAllChildren(node); + }, "selectAllChildren() on a DocumentType must throw InvalidNodeTypeError"); + return; + } + + selection.selectAllChildren(node); + if (!document.contains(node)) { + if (originalRange) { + assert_equals(getSelection().getRangeAt(0), originalRange, + "selectAllChildren must do nothing"); + } else { + assert_equals(getSelection().rangeCount, 0, + "selectAllChildren must do nothing"); + } + return; + } + // This implicitly tests that the selection is forwards, by using + // anchorOffset/focusOffset instead of getRangeAt. + assert_equals(selection.rangeCount, 1, + "After selectAllChildren, rangeCount must be 1"); + assert_equals(selection.anchorNode, node, + "After selectAllChildren, anchorNode must be the given node"); + assert_equals(selection.anchorOffset, 0, + "After selectAllChildren, anchorOffset must be 0"); + assert_equals(selection.focusNode, node, + "After selectAllChildren, focusNode must be the given node"); + assert_equals(selection.focusOffset, node.childNodes.length, + "After selectAllChildren, focusOffset must be the given node's number of children"); + if (originalRange) { + assert_not_equals(getSelection().getRangeAt(0), originalRange, + "selectAllChildren must replace any existing range, not mutate it"); + } + }, "Range " + i + " " + testRanges[i] + ", node " + j + " " + testNodes[j]); + } +} + +testDiv.style.display = "none"; +</script> |