зеркало из https://github.com/mozilla/pjs.git
157 строки
4.2 KiB
HTML
157 строки
4.2 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=682463
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 682463</title>
|
|
<script type="application/javascript" 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 div = document.createElement("DIV");
|
|
if (l) div.appendChild(l);
|
|
if (r) div.appendChild(r);
|
|
return div;
|
|
}
|
|
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>
|