<!DOCTYPE html>
<title>Node.normalize()</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id=log></div>
<script>
test(function() {
  var df = document.createDocumentFragment(),
      t1 = document.createTextNode("1"),
      t2 = document.createTextNode("2"),
      t3 = document.createTextNode("3"),
      t4 = document.createTextNode("4")
  df.appendChild(t1)
  df.appendChild(t2)
  assert_equals(df.childNodes.length, 2)
  assert_equals(df.textContent, "12")
  var el = document.createElement('x')
  df.appendChild(el)
  el.appendChild(t3)
  el.appendChild(t4)
  document.normalize()
  assert_equals(el.childNodes.length, 2)
  assert_equals(el.textContent, "34")
  assert_equals(df.childNodes.length, 3)
  assert_equals(t1.data, "1")
  df.normalize()
  assert_equals(df.childNodes.length, 2)
  assert_equals(df.firstChild, t1)
  assert_equals(t1.data, "12")
  assert_equals(t2.data, "2")
  assert_equals(el.firstChild, t3)
  assert_equals(t3.data, "34")
  assert_equals(t4.data, "4")
})

// https://www.w3.org/Bugs/Public/show_bug.cgi?id=19837
test(function() {
  var div = document.createElement("div")
  var t1 = div.appendChild(document.createTextNode(""))
  var t2 = div.appendChild(document.createTextNode("a"))
  var t3 = div.appendChild(document.createTextNode(""))
  assert_array_equals(div.childNodes, [t1, t2, t3])
  div.normalize();
  assert_array_equals(div.childNodes, [t2])
}, "Empty text nodes separated by a non-empty text node")
test(function() {
  var div = document.createElement("div")
  var t1 = div.appendChild(document.createTextNode(""))
  var t2 = div.appendChild(document.createTextNode(""))
  assert_array_equals(div.childNodes, [t1, t2])
  div.normalize();
  assert_array_equals(div.childNodes, [])
}, "Empty text nodes")
</script>
