| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| |
| description("Tests ChildNode.replaceWith((Node or DOMString)...)"); |
| function test(t, createChild) |
| { |
| type = t; |
| debug("<b>Test " + type + ".replaceWith((Node or DOMString)...).</b>"); |
| |
| debug("Test with no arguments."); |
| parent = document.createElement('div'); |
| child = createChild(); |
| parent.appendChild(child); |
| child.replaceWith(); |
| shouldBe("parent.childNodes.length", "0"); |
| debug(""); |
| |
| debug("Test with a single element."); |
| parent = document.createElement('div'); |
| child = createChild(); |
| parent.appendChild(child); |
| d1 = document.createElement("div"); |
| child.replaceWith(d1); |
| shouldBe("parent.childNodes.length", "1"); |
| shouldBe("parent.childNodes[0]", "d1"); |
| debug(""); |
| |
| debug("Test with a single string."); |
| parent = document.createElement('div'); |
| child = createChild(); |
| parent.appendChild(child); |
| child.replaceWith('hello'); |
| shouldBe("parent.childNodes.length", "1"); |
| shouldBe("parent.childNodes[0].data", "'hello'"); |
| debug(""); |
| |
| debug("Test with a both strings and elements."); |
| parent = document.createElement('div'); |
| child = createChild(); |
| parent.appendChild(child); |
| d1 = document.createElement("div"); |
| child.replaceWith('hello', d1); |
| shouldBe("parent.childNodes.length", "2"); |
| shouldBeType("parent.childNodes[0]", "Text"); |
| shouldBe("parent.childNodes[0].data", "'hello'"); |
| shouldBeType("parent.childNodes[1]", "Element"); |
| shouldBe("parent.childNodes[1]", "d1"); |
| debug(""); |
| |
| debug("Test conversion to string"); |
| parent = document.createElement('div'); |
| child = createChild(); |
| parent.appendChild(child); |
| child.replaceWith(null, undefined, 7); |
| shouldBe("parent.childNodes.length", "3"); |
| shouldBeType("parent.childNodes[0]", "Text"); |
| shouldBe("parent.childNodes[0].data", "'null'"); |
| shouldBeType("parent.childNodes[1]", "Text"); |
| shouldBe("parent.childNodes[1].data", "'undefined'"); |
| shouldBeType("parent.childNodes[2]", "Text"); |
| shouldBe("parent.childNodes[2].data", "'7'"); |
| debug(""); |
| |
| debug("Test a child without a parent."); |
| child = createChild(); |
| d1 = document.createElement("div"); |
| shouldNotThrow("child.replaceWith(d1)"); |
| debug(""); |
| |
| debug("Test replacing with an existing sibling."); |
| parent = document.createElement('div'); |
| child = createChild(); |
| parent.appendChild(child); |
| d1 = document.createElement("div"); |
| parent.appendChild(d1); |
| d2 = document.createElement("div"); |
| parent.appendChild(d2); |
| child.replaceWith(d1); |
| shouldBe("parent.childNodes.length", "2"); |
| shouldBeType("parent.childNodes[0]", "Element"); |
| shouldBe("parent.childNodes[0]", "d1"); |
| shouldBeType("parent.childNodes[1]", "Element"); |
| shouldBe("parent.childNodes[1]", "d2"); |
| debug(""); |
| |
| debug("Test replacing a child with itself."); |
| parent = document.createElement('div'); |
| child = createChild(); |
| parent.appendChild(child); |
| child.replaceWith(child); |
| shouldBe("parent.childNodes.length", "1"); |
| shouldBeType("parent.childNodes[0]", type); |
| shouldBe("parent.childNodes[0]", "child"); |
| debug(""); |
| |
| debug("Test replacing a child with itself and another node."); |
| parent = document.createElement('div'); |
| child = createChild(); |
| parent.appendChild(child); |
| d1 = document.createElement("div"); |
| child.replaceWith(child, d1); |
| shouldBe("parent.childNodes.length", "2"); |
| shouldBeType("parent.childNodes[0]", type); |
| shouldBe("parent.childNodes[0]", "child"); |
| shouldBeType("parent.childNodes[1]", "Element"); |
| shouldBe("parent.childNodes[1]", "d1"); |
| debug(""); |
| |
| debug("Test replacing a child with itself and a sibling."); |
| parent = document.createElement('div'); |
| child = createChild(); |
| parent.appendChild(child); |
| d1 = document.createElement("div"); |
| parent.appendChild(d1); |
| child.replaceWith(d1, child); |
| shouldBe("parent.childNodes.length", "2"); |
| shouldBeType("parent.childNodes[0]", "Element"); |
| shouldBe("parent.childNodes[0]", "d1"); |
| shouldBeType("parent.childNodes[1]", type); |
| shouldBe("parent.childNodes[1]", "child"); |
| debug(""); |
| |
| debug(""); |
| } |
| |
| test("Element", function() { return document.createElement("div"); }); |
| test("Text", function() { return document.createTextNode("text node text"); }); |
| test("Comment", function() { return document.createComment("comment text"); }); |
| |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |