diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /testing/web-platform/tests/dom/ranges/StaticRange-constructor.html | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/dom/ranges/StaticRange-constructor.html')
-rw-r--r-- | testing/web-platform/tests/dom/ranges/StaticRange-constructor.html | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/testing/web-platform/tests/dom/ranges/StaticRange-constructor.html b/testing/web-platform/tests/dom/ranges/StaticRange-constructor.html new file mode 100644 index 0000000000..6aae93f49b --- /dev/null +++ b/testing/web-platform/tests/dom/ranges/StaticRange-constructor.html @@ -0,0 +1,200 @@ +<!doctype html> +<title>StaticRange constructor test</title> +<link rel='author' title='Sanket Joshi' href='mailto:sajos@microsoft.com'> +<div id='log'></div> +<script src='/resources/testharness.js'></script> +<script src='/resources/testharnessreport.js'></script> +<div id='testDiv'>abc<span>def</span>ghi</div> +<script> +'use strict'; + +const testDiv = document.getElementById('testDiv'); +const testTextNode = testDiv.firstChild; +const testPINode = document.createProcessingInstruction('foo', 'abc'); +const testCommentNode = document.createComment('abc'); +document.body.append(testPINode, testCommentNode); + +test(function() { + const staticRange = new StaticRange({startContainer: testDiv, startOffset: 1, endContainer: testDiv, endOffset: 2}); + assert_equals(staticRange.startContainer, testDiv, 'valid startContainer'); + assert_equals(staticRange.startOffset, 1, 'valid startOffset'); + assert_equals(staticRange.endContainer, testDiv, 'valid endContainer'); + assert_equals(staticRange.endOffset, 2, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with Element container'); + +test(function() { + const staticRange = new StaticRange({startContainer: testTextNode, startOffset: 1, endContainer: testTextNode, endOffset: 2}); + assert_equals(staticRange.startContainer, testTextNode, 'valid startContainer'); + assert_equals(staticRange.startOffset, 1, 'valid startOffset'); + assert_equals(staticRange.endContainer, testTextNode, 'valid endContainer'); + assert_equals(staticRange.endOffset, 2, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with Text container'); + +test(function() { + const staticRange = new StaticRange({startContainer: testDiv, startOffset: 0, endContainer: testTextNode, endOffset: 1}); + assert_equals(staticRange.startContainer, testDiv, 'valid startContainer'); + assert_equals(staticRange.startOffset, 0, 'valid startOffset'); + assert_equals(staticRange.endContainer, testTextNode, 'valid endContainer'); + assert_equals(staticRange.endOffset, 1, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with Element startContainer and Text endContainer'); + +test(function() { + const staticRange = new StaticRange({startContainer: testTextNode, startOffset: 0, endContainer: testDiv, endOffset: 3}); + assert_equals(staticRange.startContainer, testTextNode, 'valid startContainer'); + assert_equals(staticRange.startOffset, 0, 'valid startOffset'); + assert_equals(staticRange.endContainer, testDiv, 'valid endContainer'); + assert_equals(staticRange.endOffset, 3, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with Text startContainer and Element endContainer'); + +test(function() { + const staticRange = new StaticRange({startContainer: testPINode, startOffset: 1, endContainer: testPINode, endOffset: 2}); + assert_equals(staticRange.startContainer, testPINode, 'valid startContainer'); + assert_equals(staticRange.startOffset, 1, 'valid startOffset'); + assert_equals(staticRange.endContainer, testPINode, 'valid endContainer'); + assert_equals(staticRange.endOffset, 2, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with ProcessingInstruction container'); + +test(function() { + const staticRange = new StaticRange({startContainer: testCommentNode, startOffset: 1, endContainer: testCommentNode, endOffset: 2}); + assert_equals(staticRange.startContainer, testCommentNode, 'valid startContainer'); + assert_equals(staticRange.startOffset, 1, 'valid startOffset'); + assert_equals(staticRange.endContainer, testCommentNode, 'valid endContainer'); + assert_equals(staticRange.endOffset, 2, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with Comment container'); + +test(function() { + const xmlDoc = new DOMParser().parseFromString('<xml></xml>', 'application/xml'); + const testCDATASection = xmlDoc.createCDATASection('abc'); + const staticRange = new StaticRange({startContainer: testCDATASection, startOffset: 1, endContainer: testCDATASection, endOffset: 2}); + assert_equals(staticRange.startContainer, testCDATASection, 'valid startContainer'); + assert_equals(staticRange.startOffset, 1, 'valid startOffset'); + assert_equals(staticRange.endContainer, testCDATASection, 'valid endContainer'); + assert_equals(staticRange.endOffset, 2, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with CDATASection container'); + +test(function() { + const staticRange = new StaticRange({startContainer: document, startOffset: 0, endContainer: document, endOffset: 1}); + assert_equals(staticRange.startContainer, document, 'valid startContainer'); + assert_equals(staticRange.startOffset, 0, 'valid startOffset'); + assert_equals(staticRange.endContainer, document, 'valid endContainer'); + assert_equals(staticRange.endOffset, 1, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with Document container'); + +test(function() { + const testDocFrag = document.createDocumentFragment(); + testDocFrag.append('a','b','c'); + const staticRange = new StaticRange({startContainer: testDocFrag, startOffset: 0, endContainer: testDocFrag, endOffset: 1}); + assert_equals(staticRange.startContainer, testDocFrag, 'valid startContainer'); + assert_equals(staticRange.startOffset, 0, 'valid startOffset'); + assert_equals(staticRange.endContainer, testDocFrag, 'valid endContainer'); + assert_equals(staticRange.endOffset, 1, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with DocumentFragment container'); + +test(function() { + const staticRange = new StaticRange({startContainer: testDiv, startOffset: 0, endContainer: testDiv, endOffset: 0}); + assert_equals(staticRange.startContainer, testDiv, 'valid startContainer'); + assert_equals(staticRange.startOffset, 0, 'valid startOffset'); + assert_equals(staticRange.endContainer, testDiv, 'valid endContainer'); + assert_equals(staticRange.endOffset, 0, 'valid endOffset'); + assert_true(staticRange.collapsed, 'collapsed'); +}, 'Construct collapsed static range'); + +test(function() { + const staticRange = new StaticRange({startContainer: testDiv, startOffset: 1, endContainer: document.body, endOffset: 0}); + assert_equals(staticRange.startContainer, testDiv, 'valid startContainer'); + assert_equals(staticRange.startOffset, 1, 'valid startOffset'); + assert_equals(staticRange.endContainer, document.body, 'valid endContainer'); + assert_equals(staticRange.endOffset, 0, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct inverted static range'); + +test(function() { + const staticRange = new StaticRange({startContainer: testDiv, startOffset: 0, endContainer: testDiv, endOffset: 15}); + assert_equals(staticRange.startContainer, testDiv, 'valid startContainer'); + assert_equals(staticRange.startOffset, 0, 'valid startOffset'); + assert_equals(staticRange.endContainer, testDiv, 'valid endContainer'); + assert_equals(staticRange.endOffset, 15, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with offset greater than length'); + +test(function() { + const testNode = document.createTextNode('abc'); + const staticRange = new StaticRange({startContainer: testNode, startOffset: 1, endContainer: testNode, endOffset: 2}); + assert_equals(staticRange.startContainer, testNode, 'valid startContainer'); + assert_equals(staticRange.startOffset, 1, 'valid startOffset'); + assert_equals(staticRange.endContainer, testNode, 'valid endContainer'); + assert_equals(staticRange.endOffset, 2, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with standalone Node container'); + +test(function() { + const testRoot = document.createElement('div'); + testRoot.append('a','b'); + const staticRange = new StaticRange({startContainer: testDiv, startOffset: 1, endContainer: testRoot, endOffset: 2}); + assert_equals(staticRange.startContainer, testDiv, 'valid startContainer'); + assert_equals(staticRange.startOffset, 1, 'valid startOffset'); + assert_equals(staticRange.endContainer, testRoot, 'valid endContainer'); + assert_equals(staticRange.endOffset, 2, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with endpoints in disconnected trees'); + +test(function() { + const testDocNode = document.implementation.createDocument('about:blank', 'html', null); + const staticRange = new StaticRange({startContainer: document, startOffset: 0, endContainer: testDocNode.documentElement, endOffset: 0}); + assert_equals(staticRange.startContainer, document, 'valid startContainer'); + assert_equals(staticRange.startOffset, 0, 'valid startOffset'); + assert_equals(staticRange.endContainer, testDocNode.documentElement, 'valid endContainer'); + assert_equals(staticRange.endOffset, 0, 'valid endOffset'); + assert_false(staticRange.collapsed, 'not collapsed'); +}, 'Construct static range with endpoints in disconnected documents'); + +test(function() { + assert_throws_dom('INVALID_NODE_TYPE_ERR', function() { + const staticRange = new StaticRange({startContainer: document.doctype, startOffset: 0, endContainer: document.doctype, endOffset: 0}); + }, 'throw a InvalidNodeTypeError when a DocumentType is passed as a startContainer or endContainer'); + + assert_throws_dom('INVALID_NODE_TYPE_ERR', function() { + const testAttrNode = testDiv.getAttributeNode('id'); + const staticRange = new StaticRange({startContainer: testAttrNode, startOffset: 0, endContainer: testAttrNode, endOffset: 0}); + }, 'throw a InvalidNodeTypeError when a Attr is passed as a startContainer or endContainer'); +}, 'Throw on DocumentType or Attr container'); + +test(function () { + assert_throws_js(TypeError, function () { + const staticRange = new StaticRange(); + }, 'throw a TypeError when no argument is passed'); + + assert_throws_js(TypeError, function () { + const staticRange = new StaticRange({startOffset: 0, endContainer: testDiv, endOffset: 0}); + }, 'throw a TypeError when a startContainer is not passed'); + + assert_throws_js(TypeError, function () { + const staticRange = new StaticRange({startContainer: testDiv, endContainer: testDiv, endOffset: 0}); + }, 'throw a TypeError when a startOffset is not passed'); + + assert_throws_js(TypeError, function () { + const staticRange = new StaticRange({startContainer: testDiv, startOffset: 0, endOffset: 0}); + }, 'throw a TypeError when an endContainer is not passed'); + + assert_throws_js(TypeError, function () { + const staticRange = new StaticRange({startContainer: testDiv, startOffset: 0, endContainer: testDiv}); + }, 'throw a TypeError when an endOffset is not passed'); + + assert_throws_js(TypeError, function () { + const staticRange = new StaticRange({startContainer: null, startOffset: 0, endContainer: testDiv, endOffset: 0}); + }, 'throw a TypeError when a null startContainer is passed'); + + assert_throws_js(TypeError, function () { + const staticRange = new StaticRange({startContainer: testDiv, startOffset: 0, endContainer: null, endOffset: 0}); + }, 'throw a TypeError when a null endContainer is passed'); +}, 'Throw on missing or invalid arguments'); +</script> |