| <!DOCTYPE html> |
| <html> |
| <body id="test"> |
| <script src="../../../resources/js-test-pre.js"></script> |
| <script> |
| description("Tests that Attr Nodes cannot have children."); |
| |
| const idAttr = document.body.getAttributeNode("id"); |
| shouldBe("idAttr.__proto__", "Attr.prototype"); |
| shouldBe("idAttr.ownerElement", "document.body"); |
| shouldBeEqualToString("idAttr.name", "id"); |
| shouldBeEqualToString("idAttr.localName", "id"); |
| shouldBeNull("idAttr.parentNode"); |
| shouldBeNull("idAttr.firstChild"); |
| shouldBeNull("idAttr.lastChild"); |
| shouldBeFalse("idAttr.hasChildNodes()"); |
| shouldBe("idAttr.childNodes.length" , "0"); |
| shouldBeEqualToString("idAttr.value", "test"); |
| shouldBeEqualToString("idAttr.nodeValue", "test"); |
| shouldBeEqualToString("idAttr.textContent", "test"); |
| |
| const text = document.createTextNode("bar"); |
| shouldThrowErrorName("idAttr.appendChild(text)", "HierarchyRequestError"); |
| shouldThrowErrorName("idAttr.insertBefore(text, null)", "HierarchyRequestError"); |
| |
| debug(""); |
| let detachedAttr = document.createAttribute("foo"); |
| shouldBeEqualToString("detachedAttr.name", "foo"); |
| shouldBeEqualToString("detachedAttr.localName", "foo"); |
| shouldBeEqualToString("detachedAttr.value", ""); |
| shouldBeEqualToString("detachedAttr.nodeValue", ""); |
| shouldBeEqualToString("detachedAttr.textContent", ""); |
| shouldBeNull("detachedAttr.ownerElement") |
| shouldBeNull("detachedAttr.parentNode"); |
| shouldBeNull("detachedAttr.firstChild"); |
| shouldBeNull("detachedAttr.lastChild"); |
| shouldBeFalse("detachedAttr.hasChildNodes()"); |
| shouldBe("detachedAttr.childNodes.length" , "0"); |
| shouldThrowErrorName("detachedAttr.appendChild(text)", "HierarchyRequestError"); |
| shouldThrowErrorName("detachedAttr.insertBefore(text, null)", "HierarchyRequestError"); |
| |
| debug(""); |
| evalAndLog("detachedAttr.value = 'bar'"); |
| shouldBeEqualToString("detachedAttr.value", "bar"); |
| shouldBeEqualToString("detachedAttr.nodeValue", "bar"); |
| shouldBeEqualToString("detachedAttr.textContent", "bar"); |
| shouldBeNull("detachedAttr.firstChild"); |
| shouldBeNull("detachedAttr.lastChild"); |
| shouldBeFalse("detachedAttr.hasChildNodes()"); |
| shouldBe("detachedAttr.childNodes.length" , "0"); |
| |
| debug(""); |
| evalAndLog("detachedAttr.nodeValue = 'bar2'"); |
| shouldBeEqualToString("detachedAttr.value", "bar2"); |
| shouldBeEqualToString("detachedAttr.nodeValue", "bar2"); |
| shouldBeEqualToString("detachedAttr.textContent", "bar2"); |
| |
| debug(""); |
| evalAndLog("detachedAttr.textContent = 'bar3'"); |
| shouldBeEqualToString("detachedAttr.value", "bar3"); |
| shouldBeEqualToString("detachedAttr.nodeValue", "bar3"); |
| shouldBeEqualToString("detachedAttr.textContent", "bar3"); |
| |
| debug(""); |
| evalAndLog("detachedAttr.value = null"); |
| shouldBeEqualToString("detachedAttr.value", "null"); |
| |
| debug(""); |
| evalAndLog("detachedAttr.nodeValue = null"); |
| shouldBeEqualToString("detachedAttr.value", ""); |
| |
| debug(""); |
| evalAndLog("detachedAttr.textContent = null"); |
| shouldBeEqualToString("detachedAttr.value", ""); |
| |
| debug(""); |
| evalAndLog("detachedAttr.value = 'bar'"); |
| evalAndLog("document.body.setAttributeNode(detachedAttr)"); |
| const fooAttr = detachedAttr; |
| detachedAttr = null; |
| shouldBe("fooAttr.ownerElement", "document.body"); |
| shouldBe("document.body.getAttributeNode('foo')", "fooAttr"); |
| shouldBeEqualToString("document.body.getAttribute('foo')", "bar"); |
| shouldBeEqualToString("fooAttr.value", "bar"); |
| shouldBe("document.body.attributes.foo", "fooAttr"); |
| shouldBe("document.body.attributes['foo']", "fooAttr"); |
| shouldBe("document.body.attributes[1]", "fooAttr"); |
| shouldBeNull("fooAttr.firstChild"); |
| shouldBeNull("fooAttr.lastChild"); |
| shouldBeFalse("fooAttr.hasChildNodes()"); |
| shouldBe("fooAttr.childNodes.length" , "0"); |
| shouldThrowErrorName("fooAttr.appendChild(text)", "HierarchyRequestError"); |
| shouldThrowErrorName("fooAttr.insertBefore(text, null)", "HierarchyRequestError"); |
| |
| debug(""); |
| </script> |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |