<!doctype html>
<meta charset="utf-8">
<title>Range stringifier</title>
<link rel="author" title="KiChjang" href="mailto:kungfukeith11@gmail.com">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id=test>Test div</div>
<div id=another>Another div</div>
<div id=last>Last div</div>
<div id=log></div>
<script>
test(function() {
  var r = new Range();
  var testDiv = document.getElementById("test");
  test(function() {
    r.selectNodeContents(testDiv);
    assert_equals(r.collapsed, false);
    assert_equals(r.toString(), testDiv.textContent);
  }, "Node contents of a single div");

  var textNode = testDiv.childNodes[0];
  test(function() {
    r.setStart(textNode, 5);
    r.setEnd(textNode, 7);
    assert_equals(r.collapsed, false);
    assert_equals(r.toString(), "di");
  }, "Text node with offsets");

  var anotherDiv = document.getElementById("another");
  test(function() {
    r.setStart(testDiv, 0);
    r.setEnd(anotherDiv, 0);
    assert_equals(r.toString(), "Test div\n");
  }, "Two nodes, each with a text node");

  var lastDiv = document.getElementById("last");
  var lastText = lastDiv.childNodes[0];
  test(function() {
    r.setStart(textNode, 5);
    r.setEnd(lastText, 4);
    assert_equals(r.toString(), "div\nAnother div\nLast");
  }, "Three nodes with start offset and end offset on text nodes");
});
</script>
