From b656831e76cd0bcaaa98f00da81974dd6e85de1b Mon Sep 17 00:00:00 2001 From: Pierre Tachoire Date: Mon, 20 Nov 2023 10:44:07 +0100 Subject: [PATCH] dom: add WPT tests for HTMLCollection --- .../HTMLCollection-as-prototype.html | 29 +++ .../collections/HTMLCollection-delete.html | 45 +++++ .../HTMLCollection-empty-name.html | 65 +++++++ .../collections/HTMLCollection-iterator.html | 45 +++++ .../HTMLCollection-live-mutations.window.js | 93 +++++++++ .../collections/HTMLCollection-own-props.html | 109 +++++++++++ ...Collection-supported-property-indices.html | 179 ++++++++++++++++++ ...MLCollection-supported-property-names.html | 135 +++++++++++++ ...domstringmap-supported-property-names.html | 54 ++++++ ...namednodemap-supported-property-names.html | 30 +++ 10 files changed, 784 insertions(+) create mode 100644 tests/wpt/dom/collections/HTMLCollection-as-prototype.html create mode 100644 tests/wpt/dom/collections/HTMLCollection-delete.html create mode 100644 tests/wpt/dom/collections/HTMLCollection-empty-name.html create mode 100644 tests/wpt/dom/collections/HTMLCollection-iterator.html create mode 100644 tests/wpt/dom/collections/HTMLCollection-live-mutations.window.js create mode 100644 tests/wpt/dom/collections/HTMLCollection-own-props.html create mode 100644 tests/wpt/dom/collections/HTMLCollection-supported-property-indices.html create mode 100644 tests/wpt/dom/collections/HTMLCollection-supported-property-names.html create mode 100644 tests/wpt/dom/collections/domstringmap-supported-property-names.html create mode 100644 tests/wpt/dom/collections/namednodemap-supported-property-names.html diff --git a/tests/wpt/dom/collections/HTMLCollection-as-prototype.html b/tests/wpt/dom/collections/HTMLCollection-as-prototype.html new file mode 100644 index 00000000..d572d35c --- /dev/null +++ b/tests/wpt/dom/collections/HTMLCollection-as-prototype.html @@ -0,0 +1,29 @@ + + +Objects whose prototype is an HTMLCollection + + +
+ diff --git a/tests/wpt/dom/collections/HTMLCollection-delete.html b/tests/wpt/dom/collections/HTMLCollection-delete.html new file mode 100644 index 00000000..99420d43 --- /dev/null +++ b/tests/wpt/dom/collections/HTMLCollection-delete.html @@ -0,0 +1,45 @@ + + +Deleting properties from HTMLCollection + + +
+ + diff --git a/tests/wpt/dom/collections/HTMLCollection-empty-name.html b/tests/wpt/dom/collections/HTMLCollection-empty-name.html new file mode 100644 index 00000000..4fc34db7 --- /dev/null +++ b/tests/wpt/dom/collections/HTMLCollection-empty-name.html @@ -0,0 +1,65 @@ + + +HTMLCollection and empty names + + +
+
+
+
+ +
+ diff --git a/tests/wpt/dom/collections/HTMLCollection-iterator.html b/tests/wpt/dom/collections/HTMLCollection-iterator.html new file mode 100644 index 00000000..6296fd1b --- /dev/null +++ b/tests/wpt/dom/collections/HTMLCollection-iterator.html @@ -0,0 +1,45 @@ + + + + +HTMLCollection @@iterator Test + + +

+

+

+

+

+ diff --git a/tests/wpt/dom/collections/HTMLCollection-live-mutations.window.js b/tests/wpt/dom/collections/HTMLCollection-live-mutations.window.js new file mode 100644 index 00000000..7dbfc6cc --- /dev/null +++ b/tests/wpt/dom/collections/HTMLCollection-live-mutations.window.js @@ -0,0 +1,93 @@ +function testHTMLCollection(name, hooks) { + test(() => { + const nodes = { + root: document.createElement("div"), + div1: document.createElement("div"), + div2: document.createElement("div"), + p: document.createElement("p") + }; + + nodes.div1.id = "div1"; + nodes.div2.id = "div2"; + + const list = nodes.root.getElementsByTagName("div"); + + hooks.initial(list, nodes); + + nodes.root.appendChild(nodes.div1); + nodes.root.appendChild(nodes.p); + nodes.root.appendChild(nodes.div2); + + hooks.afterInsertion(list, nodes); + + nodes.root.removeChild(nodes.div1); + + hooks.afterRemoval(list, nodes); + }, `HTMLCollection live mutations: ${name}`); +} + +testHTMLCollection("HTMLCollection.length", { + initial(list) { + assert_equals(list.length, 0); + }, + afterInsertion(list) { + assert_equals(list.length, 2); + }, + afterRemoval(list) { + assert_equals(list.length, 1); + } +}); + +testHTMLCollection("HTMLCollection.item(index)", { + initial(list) { + assert_equals(list.item(0), null); + }, + afterInsertion(list, nodes) { + assert_equals(list.item(0), nodes.div1); + assert_equals(list.item(1), nodes.div2); + }, + afterRemoval(list, nodes) { + assert_equals(list.item(0), nodes.div2); + } +}); + +testHTMLCollection("HTMLCollection[index]", { + initial(list) { + assert_equals(list[0], undefined); + }, + afterInsertion(list, nodes) { + assert_equals(list[0], nodes.div1); + assert_equals(list[1], nodes.div2); + }, + afterRemoval(list, nodes) { + assert_equals(list[0], nodes.div2); + } +}); + +testHTMLCollection("HTMLCollection.namedItem(index)", { + initial(list) { + assert_equals(list.namedItem("div1"), null); + assert_equals(list.namedItem("div2"), null); + }, + afterInsertion(list, nodes) { + assert_equals(list.namedItem("div1"), nodes.div1); + assert_equals(list.namedItem("div2"), nodes.div2); + }, + afterRemoval(list, nodes) { + assert_equals(list.namedItem("div1"), null); + assert_equals(list.namedItem("div2"), nodes.div2); + } +}); + +testHTMLCollection("HTMLCollection ownPropertyNames", { + initial(list) { + assert_object_equals(Object.getOwnPropertyNames(list), []); + }, + afterInsertion(list) { + assert_object_equals(Object.getOwnPropertyNames(list), ["0", "1", "div1", "div2"]); + }, + afterRemoval(list) { + assert_object_equals(Object.getOwnPropertyNames(list), ["0", "div2"]); + } +}); + diff --git a/tests/wpt/dom/collections/HTMLCollection-own-props.html b/tests/wpt/dom/collections/HTMLCollection-own-props.html new file mode 100644 index 00000000..99dc425d --- /dev/null +++ b/tests/wpt/dom/collections/HTMLCollection-own-props.html @@ -0,0 +1,109 @@ + + +HTMLCollection getters and own properties + + +
+ diff --git a/tests/wpt/dom/collections/HTMLCollection-supported-property-indices.html b/tests/wpt/dom/collections/HTMLCollection-supported-property-indices.html new file mode 100644 index 00000000..5339ec31 --- /dev/null +++ b/tests/wpt/dom/collections/HTMLCollection-supported-property-indices.html @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/dom/collections/HTMLCollection-supported-property-names.html b/tests/wpt/dom/collections/HTMLCollection-supported-property-names.html new file mode 100644 index 00000000..3d21e166 --- /dev/null +++ b/tests/wpt/dom/collections/HTMLCollection-supported-property-names.html @@ -0,0 +1,135 @@ + + + + + + +
+ + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/dom/collections/domstringmap-supported-property-names.html b/tests/wpt/dom/collections/domstringmap-supported-property-names.html new file mode 100644 index 00000000..430aa44c --- /dev/null +++ b/tests/wpt/dom/collections/domstringmap-supported-property-names.html @@ -0,0 +1,54 @@ + + +DOMStringMap Test: Supported property names + + +
+ +
Simple
+ +
Simple
+ +
+ John Doe +
+ +
Jane Doe
+ +
Jim Doe
+ + diff --git a/tests/wpt/dom/collections/namednodemap-supported-property-names.html b/tests/wpt/dom/collections/namednodemap-supported-property-names.html new file mode 100644 index 00000000..2c5dee4e --- /dev/null +++ b/tests/wpt/dom/collections/namednodemap-supported-property-names.html @@ -0,0 +1,30 @@ + + +NamedNodeMap Test: Supported property names + + +
+
Simple
+ + \ No newline at end of file