|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
<html>
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
https://bugzilla.mozilla.org/show_bug.cgi?id=421765
|
|
Packit |
f0b94e |
-->
|
|
Packit |
f0b94e |
<head>
|
|
Packit |
f0b94e |
<title>Text.wholeText tests</title>
|
|
Packit |
f0b94e |
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
Packit |
f0b94e |
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
Packit |
f0b94e |
</head>
|
|
Packit |
f0b94e |
<body>
|
|
Packit |
f0b94e |
Mozilla Bug 421765
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
<iframe id="xmlDocument" src="wholeTexty-helper.xml"></iframe>
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
<script class="testbody" type="text/javascript">
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
/** Test for Bug 421765 **/
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
SimpleTest.waitForExplicitFinish();
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var xmlDoc;
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function text(t) { return document.createTextNode(t); }
|
|
Packit |
f0b94e |
function element() { return document.createElement("div"); }
|
|
Packit |
f0b94e |
function cdata(t)
|
|
Packit |
f0b94e |
{
|
|
Packit |
f0b94e |
xmlDoc = $("xmlDocument").contentDocument;
|
|
Packit |
f0b94e |
// document.createCDATASection isn't implemented; clone for the win
|
|
Packit |
f0b94e |
var node = xmlDoc.documentElement.firstChild.cloneNode(false);
|
|
Packit |
f0b94e |
is(node.nodeType, Node.CDATA_SECTION_NODE,
|
|
Packit |
f0b94e |
"er, why isn't this a CDATA section node?");
|
|
Packit |
f0b94e |
node.data = t;
|
|
Packit |
f0b94e |
return node;
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function firstTests()
|
|
Packit |
f0b94e |
{
|
|
Packit |
f0b94e |
var outer = element();
|
|
Packit |
f0b94e |
var first = text("first");
|
|
Packit |
f0b94e |
var second = element();
|
|
Packit |
f0b94e |
second.appendChild(text("element contents"));
|
|
Packit |
f0b94e |
outer.appendChild(first);
|
|
Packit |
f0b94e |
outer.appendChild(second);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(first.wholeText, "first", "wrong wholeText for first");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var insertedText = text("-continued");
|
|
Packit |
f0b94e |
outer.insertBefore(insertedText, second);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(first.wholeText, "first-continued",
|
|
Packit |
f0b94e |
"wrong wholeText for first after insertedText insertion");
|
|
Packit |
f0b94e |
is(insertedText.wholeText, "first-continued",
|
|
Packit |
f0b94e |
"wrong wholeText for insertedText after insertedText insertion");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var cdataNode = cdata("zero-")
|
|
Packit |
f0b94e |
outer.insertBefore(cdataNode, first);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(first.wholeText, "zero-first-continued",
|
|
Packit |
f0b94e |
"wrong wholeText for first after cdataNode insertion");
|
|
Packit |
f0b94e |
is(cdataNode.wholeText, "zero-first-continued",
|
|
Packit |
f0b94e |
"wrong wholeText for cdataNode after cdataNode insertion");
|
|
Packit |
f0b94e |
is(insertedText.wholeText, "zero-first-continued",
|
|
Packit |
f0b94e |
"wrong wholeText for insertedText after cdataNode insertion");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
outer.insertBefore(element(), first);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(first.wholeText, "first-continued",
|
|
Packit |
f0b94e |
"wrong wholeText for first after element insertion");
|
|
Packit |
f0b94e |
is(cdataNode.wholeText, "zero-",
|
|
Packit |
f0b94e |
"wrong wholeText for cdataNode after element insertion");
|
|
Packit |
f0b94e |
is(insertedText.wholeText, "first-continued",
|
|
Packit |
f0b94e |
"wrong wholeText for insertedText after element insertion");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var cdataNode2 = cdata("-interrupted");
|
|
Packit |
f0b94e |
outer.insertBefore(cdataNode2, insertedText);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(first.wholeText, "first-interrupted-continued",
|
|
Packit |
f0b94e |
"wrong wholeText for first after cdataNode2 insertion");
|
|
Packit |
f0b94e |
is(cdataNode2.wholeText, "first-interrupted-continued",
|
|
Packit |
f0b94e |
"wrong wholeText for cdataNode2 after cdataNode2 insertion");
|
|
Packit |
f0b94e |
is(insertedText.wholeText, "first-interrupted-continued",
|
|
Packit |
f0b94e |
"wrong wholeText for insertedText after cdataNode2 insertion");
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function middleTests()
|
|
Packit |
f0b94e |
{
|
|
Packit |
f0b94e |
var outer = element();
|
|
Packit |
f0b94e |
var first = element();
|
|
Packit |
f0b94e |
var last = element();
|
|
Packit |
f0b94e |
var middle = text("middle");
|
|
Packit |
f0b94e |
first.appendChild(text("first element contents"));
|
|
Packit |
f0b94e |
last.appendChild(text("last element contents"));
|
|
Packit |
f0b94e |
outer.appendChild(first);
|
|
Packit |
f0b94e |
outer.appendChild(middle);
|
|
Packit |
f0b94e |
outer.appendChild(last);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(middle.wholeText, "middle", "wrong wholeText for middle");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var beforeMiddle = text("before-");
|
|
Packit |
f0b94e |
outer.insertBefore(beforeMiddle, middle);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(middle.wholeText, "before-middle",
|
|
Packit |
f0b94e |
"wrong wholeText for middle after beforeMiddle insertion");
|
|
Packit |
f0b94e |
is(beforeMiddle.wholeText, "before-middle",
|
|
Packit |
f0b94e |
"wrong wholeText for beforeMiddle after beforeMiddle insertion");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var midElement = element();
|
|
Packit |
f0b94e |
midElement.appendChild(text("middle element"));
|
|
Packit |
f0b94e |
outer.insertBefore(midElement, middle);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(middle.wholeText, "middle",
|
|
Packit |
f0b94e |
"wrong wholeText for middle after midElement insertion");
|
|
Packit |
f0b94e |
is(beforeMiddle.wholeText, "before-",
|
|
Packit |
f0b94e |
"wrong wholeText for beforeMiddle after midElement insertion");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var cdataNode = cdata("after");
|
|
Packit |
f0b94e |
outer.insertBefore(cdataNode, midElement);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(cdataNode.wholeText, "before-after",
|
|
Packit |
f0b94e |
"wrong wholeText for cdataNode after cdataNode insertion");
|
|
Packit |
f0b94e |
is(beforeMiddle.wholeText, "before-after",
|
|
Packit |
f0b94e |
"wrong wholeText for beforeMiddle after cdataNode insertion");
|
|
Packit |
f0b94e |
is(middle.wholeText, "middle",
|
|
Packit |
f0b94e |
"wrong wholeText for middle after cdataNode insertion");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var cdataNode2 = cdata("before-");
|
|
Packit |
f0b94e |
outer.insertBefore(cdataNode2, middle);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(cdataNode.wholeText, "before-after",
|
|
Packit |
f0b94e |
"wrong wholeText for cdataNode after cdataNode2 insertion");
|
|
Packit |
f0b94e |
is(beforeMiddle.wholeText, "before-after",
|
|
Packit |
f0b94e |
"wrong wholeText for beforeMiddle after cdataNode2 insertion");
|
|
Packit |
f0b94e |
is(cdataNode2.wholeText, "before-middle",
|
|
Packit |
f0b94e |
"wrong wholeText for middle after cdataNode2 insertion");
|
|
Packit |
f0b94e |
is(middle.wholeText, "before-middle",
|
|
Packit |
f0b94e |
"wrong wholeText for middle after cdataNode2 insertion");
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function lastTests()
|
|
Packit |
f0b94e |
{
|
|
Packit |
f0b94e |
var outer = element();
|
|
Packit |
f0b94e |
var first = element();
|
|
Packit |
f0b94e |
var second = text("second");
|
|
Packit |
f0b94e |
first.appendChild(text("element contents"));
|
|
Packit |
f0b94e |
outer.appendChild(first);
|
|
Packit |
f0b94e |
outer.appendChild(second);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(second.wholeText, "second", "wrong wholeText for second");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var insertedText = text("before-");
|
|
Packit |
f0b94e |
outer.insertBefore(insertedText, second);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(second.wholeText, "before-second",
|
|
Packit |
f0b94e |
"wrong wholeText for second after insertedText insertion");
|
|
Packit |
f0b94e |
is(insertedText.wholeText, "before-second",
|
|
Packit |
f0b94e |
"wrong wholeText for insertedText after insertedText insertion");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var cdataNode = cdata("zero-")
|
|
Packit |
f0b94e |
outer.insertBefore(cdataNode, insertedText);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(cdataNode.wholeText, "zero-before-second",
|
|
Packit |
f0b94e |
"wrong wholeText for cdataNode after cdataNode insertion");
|
|
Packit |
f0b94e |
is(second.wholeText, "zero-before-second",
|
|
Packit |
f0b94e |
"wrong wholeText for second after cdataNode insertion");
|
|
Packit |
f0b94e |
is(insertedText.wholeText, "zero-before-second",
|
|
Packit |
f0b94e |
"wrong wholeText for insertedText after cdataNode insertion");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
outer.insertBefore(element(), second);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(second.wholeText, "second",
|
|
Packit |
f0b94e |
"wrong wholeText for second after element insertion");
|
|
Packit |
f0b94e |
is(cdataNode.wholeText, "zero-before-",
|
|
Packit |
f0b94e |
"wrong wholeText for cdataNode after element insertion");
|
|
Packit |
f0b94e |
is(insertedText.wholeText, "zero-before-",
|
|
Packit |
f0b94e |
"wrong wholeText for insertedText after element insertion");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var cdataNode2 = cdata("interrupted-");
|
|
Packit |
f0b94e |
outer.insertBefore(cdataNode2, insertedText);
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
is(second.wholeText, "second",
|
|
Packit |
f0b94e |
"wrong wholeText for second after cdataNode2 insertion");
|
|
Packit |
f0b94e |
is(cdataNode2.wholeText, "zero-interrupted-before-",
|
|
Packit |
f0b94e |
"wrong wholeText for cdataNode2 after cdataNode2 insertion");
|
|
Packit |
f0b94e |
is(insertedText.wholeText, "zero-interrupted-before-",
|
|
Packit |
f0b94e |
"wrong wholeText for insertedText after cdataNode2 insertion");
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function noParentTests()
|
|
Packit |
f0b94e |
{
|
|
Packit |
f0b94e |
var textNode = text("foobar");
|
|
Packit |
f0b94e |
is(textNode.wholeText, textNode.data,
|
|
Packit |
f0b94e |
"orphaned textNode should have wholeText == data");
|
|
Packit |
f0b94e |
is(textNode.wholeText, "foobar",
|
|
Packit |
f0b94e |
"orphaned textNode should have wholeText == 'foobar'");
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
var cdataSection = cdata("baz");
|
|
Packit |
f0b94e |
is(cdataSection.wholeText, cdataSection.data,
|
|
Packit |
f0b94e |
"orphaned cdatasection should have wholeText == data");
|
|
Packit |
f0b94e |
is(cdataSection.wholeText, "baz",
|
|
Packit |
f0b94e |
"orphaned cdatasection should have wholeText == data");
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
function tests()
|
|
Packit |
f0b94e |
{
|
|
Packit |
f0b94e |
try
|
|
Packit |
f0b94e |
{
|
|
Packit |
f0b94e |
firstTests();
|
|
Packit |
f0b94e |
middleTests();
|
|
Packit |
f0b94e |
lastTests();
|
|
Packit |
f0b94e |
noParentTests();
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
catch (e)
|
|
Packit |
f0b94e |
{
|
|
Packit |
f0b94e |
ok(false, "error thrown: " + e);
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
finally
|
|
Packit |
f0b94e |
{
|
|
Packit |
f0b94e |
SimpleTest.finish();
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
}
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
window.addEventListener("load", tests);
|
|
Packit |
f0b94e |
</script>
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
</body>
|
|
Packit |
f0b94e |
</html>
|
|
Packit |
f0b94e |
|