<!doctype html>
<meta charset=utf-8>
<title>HTMLScriptElement.text</title>
<link rel=help href="https://html.spec.whatwg.org/multipage/#dom-script-text">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
var script;
setup(function() {
  script = document.createElement("script")
  script.appendChild(document.createComment("COMMENT"))
  script.appendChild(document.createTextNode("  TEXT  "))
  script.appendChild(document.createProcessingInstruction("P", "I"))
  script.appendChild(document.createElement("a"))
        .appendChild(document.createTextNode("ELEMENT"))
})
test(function() {
  assert_equals(script.text, "  TEXT  ")
  assert_equals(script.textContent, "  TEXT  ELEMENT")
}, "Getter")
test(function() {
  script.text = " text "
  assert_equals(script.text, " text ")
  assert_equals(script.textContent, " text ")
  assert_equals(script.firstChild.nodeType, Node.TEXT_NODE)
  assert_equals(script.firstChild.data, " text ")
  assert_equals(script.firstChild, script.lastChild)
  assert_array_equals(script.childNodes, [script.firstChild])
}, "Setter (non-empty string)")
test(function() {
  script.text = ""
  assert_equals(script.text, "")
  assert_equals(script.textContent, "")
  assert_equals(script.firstChild, null)
}, "Setter (empty string)")
test(function() {
  script.text = null
  assert_equals(script.text, "null")
  assert_equals(script.textContent, "null")
  assert_equals(script.firstChild.nodeType, Node.TEXT_NODE)
  assert_equals(script.firstChild.data, "null")
  assert_equals(script.firstChild, script.lastChild)
}, "Setter (null)")
test(function() {
  script.text = undefined
  assert_equals(script.text, "undefined")
  assert_equals(script.textContent, "undefined")
  assert_equals(script.firstChild.nodeType, Node.TEXT_NODE)
  assert_equals(script.firstChild.data, "undefined")
  assert_equals(script.firstChild, script.lastChild)
}, "Setter (undefined)")
</script>
