<!doctype html>
<meta charset=utf-8>
<title>Text.splitText()</title>
<link rel=help href="https://dom.spec.whatwg.org/#dom-text-splittextoffset">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
  var text = document.createTextNode("camembert");
  assert_throws("INDEX_SIZE_ERR", function () { text.splitText(10) });
}, "Split text after end of data");

test(function() {
  var text = document.createTextNode("");
  var new_text = text.splitText(0);
  assert_equals(text.data, "");
  assert_equals(new_text.data, "");
}, "Split empty text");

test(function() {
  var text = document.createTextNode("comté");
  var new_text = text.splitText(0);
  assert_equals(text.data, "");
  assert_equals(new_text.data, "comté");
}, "Split text at beginning");

test(function() {
  var text = document.createTextNode("comté");
  var new_text = text.splitText(5);
  assert_equals(text.data, "comté");
  assert_equals(new_text.data, "");
}, "Split text at end");

test(function() {
  var text = document.createTextNode("comté");
  var new_text = text.splitText(3);
  assert_equals(text.data, "com");
  assert_equals(new_text.data, "té");
  assert_equals(new_text.parentNode, null);
}, "Split root");

test(function() {
  var parent = document.createElement('div');
  var text = document.createTextNode("bleu");
  parent.appendChild(text);
  var new_text = text.splitText(2);
  assert_equals(text.data, "bl");
  assert_equals(new_text.data, "eu");
  assert_equals(text.nextSibling, new_text);
  assert_equals(new_text.parentNode, parent);
}, "Split child");
</script>
