Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE HTML>
<html>
<!--
-->
<head>
<title>Test for Bug 682463</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=682463">Mozilla Bug 682463</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 682463 **/
function text(s) {
return document.createTextNode(s);
}
function div(l,r) {
var d = document.createElement("DIV");
if (l) d.appendChild(l);
if (r) d.appendChild(r);
return d;
}
function createRange(sn,so,en,eo) {
var r = document.createRange();
r.setStart(sn,so);
r.setEnd(en,eo);
return r;
}
function verifyRange(msg,r,sn,so,en,eo) {
ok(r.startContainer == sn && r.startOffset == so &&
r.endContainer == en && r.endOffset == eo, msg);
}
function showRange(r,msg) {
var s = "" + r.startContainer + ": " + r.startOffset;
s+= '\n';
s += "" + r.endContainer + ": " + r.endOffset;
alert(msg + ':\n' + s)
}
var tests = [
function() {
var t = text("foobar");
var r = createRange(t,2,t,t.length);
var t2 = t.splitText(1);
verifyRange("split before, no parent",r,t2,1,t2,5);
},
function() {
var t = text("foobar");
var r = createRange(t,0,t,t.length);
var t2 = t.splitText(3);
verifyRange("split middle, no parent",r,t,0,t,3);
},
function() {
var t = text("foobar");
var r = createRange(t,0,t,t.length);
var n = t.length;
var t2 = t.splitText(n);
verifyRange("split after, no parent",r,t,0,t,n);
},
function() {
var t = text("foobar");
var parent = div(t);
var r = createRange(t,0,t,t.length);
var t2 = t.splitText(3);
verifyRange("split middle, parent",r,t,0,t2,3);
parent.removeChild(t);
verifyRange("removed left, parent",r,parent,0,t2,3);
var t2b = t2.splitText(1);
verifyRange("split middle, parent, end",r,parent,0,t2b,2);
},
function() {
var t0 = text("x");
var t = text("foobar");
var parent = div(t0,t);
var r = createRange(t,0,t,t.length);
var t2 = t.splitText(3);
parent.removeChild(t);
verifyRange("removed left, text sibling",r,parent,1,t2,3);
},
function() {
var t = text("foobar");
var parent = div(t);
var r = createRange(t,2,t,t.length);
var t2 = t.splitText(1);
verifyRange("split before, parent",r,t2,1,t2,5);
parent.removeChild(t2);
verifyRange("removed right, parent",r,parent,1,parent,1);
},
function() {
var t = text("foobar");
var parent = div(t);
var r = createRange(t,0,t,t.length);
var n = t.length;
var t2 = t.splitText(n);
verifyRange("split after, parent",r,t,0,t,n);
r.setEnd(t2,0);
verifyRange("split after, parent, extend",r,t,0,t2,0);
t2.splitText(0);
verifyRange("split after, parent, extend, split end",r,t,0,t2,0);
t2.textContent = "baz";
t2.splitText(2);
verifyRange("split after, parent, extend, split after end",r,t,0,t2,0);
r.setEnd(t2,2);
var t2b = t2.splitText(1);
verifyRange("split after, parent, split end",r,t,0,t2b,1);
},
function() {
var t = text("foobar");
var parent = div(t);
document.body.appendChild(parent);
var r = createRange(t,0,t,t.length);
var t2 = t.splitText(3);
verifyRange("split middle, in document",r,t,0,t2,3);
},
function() {
var t = text("foobar");
var parent = div(t);
document.body.appendChild(parent);
var r = createRange(t,2,t,t.length);
var t2 = t.splitText(1);
verifyRange("split before, in document",r,t2,1,t2,5);
},
function() {
var t = text("foobar");
var parent = div(t);
document.body.appendChild(parent);
var r = createRange(t,0,t,t.length);
var n = t.length;
var t2 = t.splitText(n);
verifyRange("split after, in document",r,t,0,t,n);
}
];
function runTests() {
var len = tests.length;
for (var i = 0; i < len; ++i) {
tests[i]();
}
SimpleTest.finish();
}
addLoadEvent(runTests);
SimpleTest.waitForExplicitFinish();
</script>
</pre>
</body>
</html>