| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| |
| description("Tests ParentNode.prepend((Node or DOMString)...)"); |
| |
| debug("Test Element.prepend((Node or DOMString)...)."); |
| debug(""); |
| debug("Test single node."); |
| var container = document.createElement("div"); |
| var d1 = document.createElement("div"); |
| container.prepend(d1); |
| shouldBe("d1.parentNode", "container"); |
| debug(""); |
| |
| debug("Test multiple nodes."); |
| container = document.createElement("div"); |
| d1 = document.createElement("div"); |
| var d2 = document.createElement("div"); |
| container.prepend(d1, d2); |
| shouldBe("d1.parentNode", "container"); |
| shouldBe("d2.parentNode", "container"); |
| shouldBe("d1.nextSibling", "d2"); |
| shouldBe("d2.previousSibling", "d1"); |
| debug(""); |
| |
| debug("Test a single string."); |
| container = document.createElement("div"); |
| container.prepend("hello"); |
| shouldBeType("container.firstChild", "Text"); |
| shouldBe("container.firstChild.data", "'hello'"); |
| debug(""); |
| |
| debug("Test multiple strings."); |
| container = document.createElement("div"); |
| container.prepend("hello", "world"); |
| shouldBeType("container.childNodes[0]", "Text"); |
| shouldBe("container.childNodes[0].data", "'hello'"); |
| shouldBeType("container.childNodes[1]", "Text"); |
| shouldBe("container.childNodes[1].data", "'world'"); |
| debug(""); |
| |
| debug("Test nodes and strings."); |
| container = document.createElement("div"); |
| d1 = document.createElement("div"); |
| container.prepend("hello", d1, "world"); |
| shouldBeType("container.childNodes[0]", "Text"); |
| shouldBeType("container.childNodes[1]", "Element"); |
| shouldBeType("container.childNodes[2]", "Text"); |
| debug(""); |
| |
| debug("Test when container already has children."); |
| container = document.createElement("div"); |
| d1 = document.createElement("div"); |
| d2 = document.createElement("div"); |
| container.appendChild(d1); |
| container.prepend(d2, "hello"); |
| shouldBeType("container.childNodes[0]", "Element"); |
| shouldBe("container.childNodes[0]", "d2"); |
| shouldBeType("container.childNodes[1]", "Text"); |
| shouldBe("container.childNodes[1].data", "'hello'"); |
| shouldBeType("container.childNodes[2]", "Element"); |
| shouldBe("container.childNodes[2]", "d1"); |
| debug(""); |
| |
| debug("Test conversion to string"); |
| container = document.createElement("div"); |
| container.prepend(null, undefined, 7); |
| shouldBeType("container.childNodes[0]", "Text"); |
| shouldBe("container.childNodes[0].data", "'null'"); |
| shouldBeType("container.childNodes[1]", "Text"); |
| shouldBe("container.childNodes[1].data", "'undefined'"); |
| shouldBeType("container.childNodes[2]", "Text"); |
| shouldBe("container.childNodes[2].data", "'7'"); |
| debug(""); |
| |
| debug("Test no parameters"); |
| container = document.createElement("div"); |
| shouldNotThrow("container.prepend()"); |
| shouldBe("container.childNodes.length", "0"); |
| debug(""); |
| |
| debug("Test error condition of self-prepending."); |
| container = document.createElement("div"); |
| shouldThrow("container.prepend(container)"); |
| debug(""); |
| |
| debug("Test DocumentFragment.prepend((Node or DOMString)...)."); |
| var fragment = document.createDocumentFragment(); |
| d1 = document.createElement("div"); |
| fragment.prepend(d1); |
| shouldBe("d1.parentNode", "fragment"); |
| debug(""); |
| |
| |
| debug("Test Document.prepend((Node or DOMString)...)."); |
| debug("") |
| debug("Test simple case of single child prepend.") |
| var doc = document.implementation.createHTMLDocument(); |
| while (doc.firstChild) |
| doc.firstChild.remove(); |
| d1 = doc.createElement("div"); |
| doc.prepend(d1); |
| shouldBe("d1.parentNode", "doc"); |
| debug(""); |
| |
| debug("Test case prepending a root element and a comment.") |
| var doc = document.implementation.createHTMLDocument(); |
| while (doc.firstChild) |
| doc.firstChild.remove(); |
| d1 = doc.createElement("div"); |
| c1 = doc.createComment("comment text"); |
| doc.prepend(d1, c1); |
| shouldBe("d1.parentNode", "doc"); |
| shouldBe("c1.parentNode", "doc"); |
| debug(""); |
| |
| debug("Test error condition prepending a second root element.") |
| doc = document.implementation.createHTMLDocument(); |
| while (doc.firstChild) |
| doc.firstChild.remove(); |
| d1 = doc.createElement("div"); |
| d2 = doc.createElement("div"); |
| doc.appendChild(d1); |
| shouldThrow("doc.prepend(d2)"); |
| debug(""); |
| |
| debug("Test error condition prepending Text node as the root element.") |
| doc = document.implementation.createHTMLDocument(); |
| while (doc.firstChild) |
| doc.firstChild.remove(); |
| shouldThrow("doc.prepend('hello')"); |
| |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |