Blame dom/base/test/test_bug415860.html

Packit f0b94e
Packit f0b94e
<html>
Packit f0b94e
Packit f0b94e
https://bugzilla.mozilla.org/show_bug.cgi?id=415860
Packit f0b94e
-->
Packit f0b94e
<head>
Packit f0b94e
  <title>Test for Bug 415860</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 415860
Packit f0b94e

Packit f0b94e
Packit f0b94e
  
Packit f0b94e
Packit f0b94e
Packit f0b94e
Packit f0b94e
<script class="testbody" type="text/javascript">
Packit f0b94e
Packit f0b94e
/** Test for Bug 415860 **/
Packit f0b94e
Packit f0b94e
function tests() {
Packit f0b94e
  // #text node
Packit f0b94e
  n = document.getElementById('testdata').firstChild;
Packit f0b94e
  s = getSelection();
Packit f0b94e
Packit f0b94e
  // Initial text..
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
Packit f0b94e
  // select the second last character
Packit f0b94e
  r = document.createRange();
Packit f0b94e
  r.setStart(n, 4);
Packit f0b94e
  r.setEnd(n, 5);
Packit f0b94e
  s.addRange(r);
Packit f0b94e
Packit f0b94e
  ok(s == "o", "Should have selected 'o'");
Packit f0b94e
  ok(r.toString() == "o", "Range should be 'o'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
Packit f0b94e
  // Update the text
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
Packit f0b94e
  ok(s == "", "Should have selected ''");
Packit f0b94e
  ok(r.toString() == "", "Range should be ''");
Packit f0b94e
  ok(r.collapsed == true, "Range should be collapsed");
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
Packit f0b94e
  // select the last character
Packit f0b94e
  r = document.createRange();
Packit f0b94e
  r.setStart(n, 5);
Packit f0b94e
  r.setEnd(n, 6);
Packit f0b94e
  s.addRange(r);
Packit f0b94e
Packit f0b94e
  ok(s == "!", "Should have selected '!'");
Packit f0b94e
  ok(r.toString() == "!", "Range should be '!'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
Packit f0b94e
  // Update the text
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  ok(s == "", "Should have selected ''");
Packit f0b94e
  ok(r.toString() == "", "Range should be ''");
Packit f0b94e
  ok(r.collapsed == true, "Range should be collapsed");
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
Packit f0b94e
  r = document.createRange();
Packit f0b94e
  r.setStart(n, 5);
Packit f0b94e
  r.setEnd(n, 6);
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "!", "Range should be '!'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  r.setStart(n, 0);
Packit f0b94e
  r.setEnd(n, 6);
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "Hello!", "Range should be 'Hello!'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.deleteData(0, 1);
Packit f0b94e
  ok(n.nodeValue == "ello!", "Node value should be 'ello!'");
Packit f0b94e
  ok(r.toString() == "ello!", "Range should be 'ello!'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.deleteData(0, 4);
Packit f0b94e
  ok(n.nodeValue == "!", "Node value should be '!'");
Packit f0b94e
  ok(r.toString() == "!", "Range should be '!'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  r.setStart(n, 0);
Packit f0b94e
  r.setEnd(n, 6);
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "Hello!", "Range should be 'Hello!'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.replaceData(0, 6, "hELLO?");
Packit f0b94e
  ok(n.nodeValue == "hELLO?", "Node value should be 'hELLO?'");
Packit f0b94e
  ok(r.toString() == "", "Range should be ''");
Packit f0b94e
  ok(r.collapsed == true, "Range should be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  r.setStart(n, 1);
Packit f0b94e
  r.setEnd(n, 3);
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "el", "Range should be 'el'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.replaceData(2, 6, "END");
Packit f0b94e
  ok(n.nodeValue == "HeEND", "Node value should be 'HeEND!'");
Packit f0b94e
  ok(r.toString() == "e", "Range should be 'e'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  r.setStart(n, 1);
Packit f0b94e
  r.setEnd(n, 5);
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "ello", "Range should be 'ello'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.replaceData(2, 1, "MID");
Packit f0b94e
  ok(n.nodeValue == "HeMIDlo!", "Node value should be 'HeMIDlo!'");
Packit f0b94e
  ok(r.toString() == "eMIDlo", "Range should be 'eMIDlo'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  r.setStart(n, 0);
Packit f0b94e
  r.setEnd(n, 6);
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "Hello!", "Range should be 'Hello!'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "hELLO?...";
Packit f0b94e
  ok(n.nodeValue == "hELLO?...", "Node value should be 'hELLO?...'");
Packit f0b94e
  ok(r.toString() == "", "Range should be ''");
Packit f0b94e
  ok(r.collapsed == true, "Range should be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  r.setStart(n, 1);
Packit f0b94e
  r.setEnd(n, 6);
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "ello!", "Range should be 'ello!'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  r.setStart(n, 0);
Packit f0b94e
  r.setEnd(n, 5);
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "Hello", "Range should be 'Hello'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "hELLO?...";
Packit f0b94e
  ok(n.nodeValue == "hELLO?...", "Node value should be 'hELLO?...'");
Packit f0b94e
  ok(r.toString() == "", "Range should be ''");
Packit f0b94e
  ok(r.collapsed == true, "Range should be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  r.setStart(n, 0);
Packit f0b94e
  r.setEnd(n, 5);
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "Hello", "Range should be 'Hello'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "...";
Packit f0b94e
  ok(n.nodeValue == "...", "Node value should be '...'");
Packit f0b94e
  ok(r.toString() == "", "Range should be ''");
Packit f0b94e
  ok(r.collapsed == true, "Range should be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  r.setStart(n, 1);
Packit f0b94e
  r.setEnd(n, 5);
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "ello", "Range should be 'ello'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "...";
Packit f0b94e
  ok(n.nodeValue == "...", "Node value should be '...'");
Packit f0b94e
  ok(r.toString() == "", "Range should be ''");
Packit f0b94e
  ok(r.collapsed == true, "Range should be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "$";
Packit f0b94e
  r.setStart(n, 0);
Packit f0b94e
  r.setEnd(n, 1);
Packit f0b94e
  ok(n.nodeValue == "$", "Node value should be $'");
Packit f0b94e
  ok(r.toString() == "$", "Range should be '$'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "?";
Packit f0b94e
  ok(n.nodeValue == "?", "Node value should be '?'");
Packit f0b94e
  ok(r.toString() == "", "Range should be ''");
Packit f0b94e
  ok(r.collapsed == true, "Range should be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  r.setStart(n, 3);
Packit f0b94e
  r.setEnd(n, 6);
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "lo!", "Range should be 'lo!'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.replaceData(1, 4, "MID");
Packit f0b94e
  ok(n.nodeValue == "HMID!", "Node value should be 'HMID!'");
Packit f0b94e
  ok(r.toString() == "MID!", "Range should be 'MID!'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  r.setStart(n, 3);
Packit f0b94e
  r.setEnd(n, 6);
Packit f0b94e
  ok(n.nodeValue == "Hello!", "Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "lo!", "Range should be 'lo!'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.replaceData(1, 2, "MID");
Packit f0b94e
  ok(n.nodeValue == "HMIDlo!", "Node value should be 'HMIDlo!'");
Packit f0b94e
  ok(r.toString() == "MIDlo!", "Range should be 'MIDlo!'");
Packit f0b94e
  ok(r.collapsed == false, "Range shouldn't be collapsed");
Packit f0b94e
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  r = document.createRange();
Packit f0b94e
  r.setStart(n, 6);
Packit f0b94e
  r.setEnd(n, 6);
Packit f0b94e
  ok(n.nodeValue == "Hello!", " Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "", " Range should be ''");
Packit f0b94e
  ok(r.startOffset == 6, "Start offset should be 6");
Packit f0b94e
  ok(r.endOffset == 6, "End offset should be 6");
Packit f0b94e
Packit f0b94e
  n.textContent = "Hello!";
Packit f0b94e
  ok(n.nodeValue == "Hello!", " Node value should be 'Hello!'");
Packit f0b94e
  ok(r.toString() == "", " Range should be ''");
Packit f0b94e
  ok(r.startOffset == 0, "Start offset should be 0");
Packit f0b94e
  ok(r.endOffset == 0, "End offset should be 0");
Packit f0b94e
}
Packit f0b94e
Packit f0b94e
tests();
Packit f0b94e
Packit f0b94e
</script>
Packit f0b94e
Packit f0b94e
</body>
Packit f0b94e
</html>
Packit f0b94e