diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/html/semantics/forms/the-option-element/option-element-constructor.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/html/semantics/forms/the-option-element/option-element-constructor.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/forms/the-option-element/option-element-constructor.html | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/forms/the-option-element/option-element-constructor.html b/testing/web-platform/tests/html/semantics/forms/the-option-element/option-element-constructor.html new file mode 100644 index 0000000000..05bcb3024a --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/the-option-element/option-element-constructor.html @@ -0,0 +1,135 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>Option element constructor</title> +<link rel="author" title="Alex Pearson" href="mailto:alex@alexpear.com"> +<link rel="help" href="https://html.spec.whatwg.org/#the-option-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<div id="parent"> + <div id="child" tabindex="0"></div> +</div> + +<body> +<script> + "use strict"; + + test(() => { + const option = new Option(); + + assert_true(option instanceof HTMLOptionElement); + + assert_false(option.hasChildNodes()); + assert_false(option.hasAttribute("value")); + assert_false(option.hasAttribute("selected")); + assert_false(option.selected); + + assert_equals(option.textContent, ""); + assert_equals(option.value, ""); + }, "Option constructor with no arguments"); + + test(() => { + const option = new Option(false, false); + + assert_true(option instanceof HTMLOptionElement); + + assert_true(option.hasChildNodes()); + assert_equals(option.childNodes.length, 1); + assert_equals(option.childNodes[0].nodeType, Node.TEXT_NODE); + assert_equals(option.childNodes[0].data, "false"); + assert_equals(option.getAttribute("value"), "false"); + assert_false(option.hasAttribute("selected")); + assert_false(option.selected); + + assert_equals(option.textContent, "false"); + assert_equals(option.value, "false"); + }, "Option constructor with falsy arguments"); + + test(() => { + const option = new Option("text", "value"); + + assert_true(option.hasChildNodes()); + assert_equals(option.childNodes.length, 1); + assert_equals(option.childNodes[0].nodeType, Node.TEXT_NODE); + assert_equals(option.childNodes[0].data, "text"); + assert_equals(option.getAttribute("value"), "value"); + assert_false(option.hasAttribute("selected")); + assert_false(option.selected); + + assert_equals(option.textContent, "text"); + assert_equals(option.value, "value"); + }, "Option constructor creates HTMLOptionElement with specified text and value"); + + test(() => { + const notSelected = new Option("text", "value", false); + const selected = new Option("text", "value", true); + + assert_false(notSelected.hasAttribute("selected")); + assert_equals(notSelected.getAttribute("selected"), null); + assert_false(notSelected.selected); + + assert_equals(selected.getAttribute("selected"), ""); + assert_false(selected.selected); + }, "Option constructor handles selectedness correctly when specified with defaultSelected only"); + + test(() => { + const notSelected = new Option("text", "value", true, false); + const selected = new Option("text", "value", false, true); + + assert_equals(notSelected.selected, false); + assert_equals(selected.selected, true); + }, "Option constructor handles selectedness correctly, even when incongruous with defaultSelected"); + + test(() => { + const option = new Option(undefined, undefined); + + assert_false(option.hasChildNodes()); + assert_false(option.hasAttribute("value")); + + assert_equals(option.textContent, ""); + assert_equals(option.value, ""); + }, "Option constructor treats undefined text and value correctly"); + + test(() => { + const option = new Option("", ""); + + assert_false(option.hasChildNodes()); + assert_true(option.hasAttribute("value")); + + assert_equals(option.textContent, ""); + assert_equals(option.value, ""); + }, "Option constructor treats empty text and value correctly"); + + test(() => { + const option = new Option("text", "value", 0, ""); + + assert_false(option.hasAttribute("selected")); + assert_false(option.selected); + }, "Option constructor treats falsy selected and defaultSelected correctly"); + + test(() => { + const option = new Option("text", "value", {}, 1); + + assert_true(option.hasAttribute("selected")); + assert_true(option.selected); + }, "Option constructor treats truthy selected and defaultSelected correctly"); + + test(() => { + const option = new Option("text", "value", false, true); + + assert_false(option.hasAttribute("selected")); + assert_true(option.selected); + + option.setAttribute("selected", ""); + assert_true(option.selected); + + option.removeAttribute("selected"); + assert_false(option.selected); + }, "Option constructor does not set dirtiness (so, manipulating the selected content attribute still updates the " + + "selected IDL attribute)"); + + test(function() { + var option = new Option(); + assert_equals(Object.getPrototypeOf(option), HTMLOptionElement.prototype); + }, "Prototype of object created with named constructor"); +</script> |