140 lines
4.6 KiB
HTML
140 lines
4.6 KiB
HTML
<!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>
|