diff options
Diffstat (limited to 'LayoutTests/fast/dom/Node/normalize.html')
-rw-r--r-- | LayoutTests/fast/dom/Node/normalize.html | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/LayoutTests/fast/dom/Node/normalize.html b/LayoutTests/fast/dom/Node/normalize.html new file mode 100644 index 0000000..a8b61cb --- /dev/null +++ b/LayoutTests/fast/dom/Node/normalize.html @@ -0,0 +1,213 @@ +<html> + +<head> + +<title>Test of DOM Node.normalize()</title> + +<script> + +function logLine(message) +{ + var console = document.getElementById("console"); + console.appendChild(document.createTextNode(message)); + console.appendChild(document.createElement('br')); +} + +function log(message) +{ + var console = document.getElementById("console"); + console.appendChild(document.createTextNode(message)); +} + + +function prepare_test1(testDiv) +{ + testDiv.firstChild.splitText(4); + return testDiv.childNodes.length == 2; +} +function check_test1(testDiv) +{ + return testDiv.childNodes.length == 1; +} + +function prepare_test2(testDiv) +{ + testDiv.firstChild.splitText(9); + testDiv.firstChild.splitText(4); + return testDiv.childNodes.length == 3; +} +function check_test2(testDiv) +{ + return testDiv.childNodes.length == 1; +} + +function prepare_test3(testDiv) +{ + testDiv.childNodes[1].splitText(4); + testDiv.childNodes[4].splitText(3); + return testDiv.childNodes.length == 6; +} +function check_test3(testDiv) +{ + return testDiv.childNodes.length == 4; +} + +function prepare_test4(testDiv) +{ + testDiv.childNodes[0].data = ""; + return testDiv.childNodes.length == 1; +} +function check_test4(testDiv) +{ + return testDiv.childNodes.length == 0; +} + +function prepare_test5(testDiv) +{ + testDiv.childNodes[1].data = ""; + return testDiv.childNodes.length == 3; +} +function check_test5(testDiv) +{ + return testDiv.childNodes.length == 2; +} + +function prepare_test6(testDiv) +{ + testDiv.childNodes[0].splitText(0); + testDiv.childNodes[0].splitText(0); + return testDiv.childNodes.length == 3; +} +function check_test6(testDiv) +{ + return testDiv.childNodes.length == 1; +} + +function prepare_test7(testDiv) +{ + testDiv.childNodes[0].splitText(4); + testDiv.childNodes[0].splitText(4); + testDiv.childNodes[0].splitText(4); + return testDiv.childNodes.length == 4; +} +function check_test7(testDiv) +{ + return testDiv.childNodes.length == 1; +} + +function prepare_test8(testDiv) +{ + testDiv.childNodes[0].splitText(4); + testDiv.childNodes[0].splitText(4); + return testDiv.childNodes.length == 3; +} +function check_test8(testDiv) +{ + return testDiv.childNodes.length == 1; +} + +function prepare_test9(testDiv) +{ + testDiv.childNodes[1].splitText(4); + testDiv.childNodes[1].splitText(0); // empty text node before other text nodes + testDiv.childNodes[5].splitText(3); + testDiv.childNodes[5].splitText(3); // empty text node between other text nodes + testDiv.childNodes[7].splitText(2); // empty text node after other text nodes + return testDiv.childNodes.length == 9; +} +function check_test9(testDiv) +{ + return testDiv.childNodes.length == 4; +} + +function prepare_test10(testDiv) +{ + testDiv.childNodes[0].childNodes[0].splitText(2); + testDiv.childNodes[1].splitText(4); + testDiv.childNodes[3].childNodes[0].data = ""; // empty first text node of the second bold node + testDiv.childNodes[3].childNodes[1].childNodes[0].data = ""; // empty text node of the italic node + testDiv.childNodes[4].splitText(1); + return testDiv.childNodes.length == 6; +} +function check_test10(testDiv) +{ + return testDiv.childNodes.length == 4 + && testDiv.childNodes[0].childNodes.length == 1 // first bold node must have single text node child + && testDiv.childNodes[2].childNodes.length == 1 // first bold node must have single italic node child + && testDiv.childNodes[2].childNodes[0].childNodes.length == 0; // italic node must be empty +} + +function runTest(testDiv, testName) +{ + if (self["prepare_"+testName](testDiv)) { + var oldHTML = testDiv.innerHTML; + testDiv.normalize(); + if (testDiv.innerHTML != oldHTML) { + log("FAILED: innerHTML changed from \"" + oldHTML + "\" to \"" + testDiv.innerHTML + "\""); + } else { + if (self["check_"+testName](testDiv)) + log("PASSED"); + else + log("FAILED"); + } + } else { + log("FAILED in test preparation"); + } +} + +function runTests() +{ + if (window.layoutTestController) + layoutTestController.dumpAsText(); + + try { + var tests = document.getElementById("tests").childNodes; + for (i = 0; i < tests.length; i++) { + var testDiv = tests[i]; + // Skip formatting text nodes + if (testDiv.nodeType == Node.ELEMENT_NODE) { + var testName = testDiv.getAttribute("name"); + + log(testName + " (" + testDiv.getAttribute("description") + "): "); + + try { + runTest(testDiv, testName); + } catch(e) { + log("FAILED with exception: " + e); + } + + logLine("") + } + } + + } catch(e) { + logLine("FAILED, exception thrown during tests: " + e); + } +} + +</script> + +</head> + +<body onload="runTests()"> + +<div id="description">Several tests of the DOM normalize() function.</div> + +<div id="tests" style="display:none"> + <div name="test1" description="two non-empty text nodes">some text</div> + <div name="test2" description="three non-empty text nodes">some more text</div> + <div name="test3" description="non-empty text nodes mixed with elements"><b></b>some more<b></b> text</div> + <div name="test4" description="single empty text node">text</div> + <div name="test5" description="empty text node between elements"><b></b>text<i></i></div> + <div name="test6" description="empty text nodes before non-empty node">text</div> + <div name="test7" description="empty text nodes after non-empty node">text</div> + <div name="test8" description="empty text nodes between non-empty nodes">some text</div> + <div name="test9" description="empty and non-empty text nodes mixed with elements"><b></b>some more<b></b> text</div> + <div name="test10" description="mixed cases including deeper nested text nodes"><b>text</b>text <b>text<i>text</i></b> text</div> +</div> + +<div id="console"></div> + +</body> + +</html> |