| Index: third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-option-element/option-element-constructor.html
|
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-option-element/option-element-constructor.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-option-element/option-element-constructor.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ad3104b6590afa3d56dc1669c99ba9b7b6d3d23e
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/forms/the-option-element/option-element-constructor.html
|
| @@ -0,0 +1,120 @@
|
| +<!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("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)");
|
| +</script>
|
|
|