<!doctype html>
<meta charset=utf-8>
<title>Document.adoptNode</title>
<link rel=help href="https://dom.spec.whatwg.org/#dom-document-adoptnode">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<!--creates an element with local name "x<": --><x<>x</x<>
<script>
test(function() {
  var y = document.getElementsByTagName("x<")[0]
  var child = y.firstChild
  assert_equals(y.parentNode, document.body)
  assert_equals(y.ownerDocument, document)
  assert_equals(document.adoptNode(y), y)
  assert_equals(y.parentNode, null)
  assert_equals(y.firstChild, child)
  assert_equals(y.ownerDocument, document)
  assert_equals(child.ownerDocument, document)
  var doc = document.implementation.createDocument(null, null, null)
  assert_equals(doc.adoptNode(y), y)
  assert_equals(y.parentNode, null)
  assert_equals(y.firstChild, child)
  assert_equals(y.ownerDocument, doc)
  assert_equals(child.ownerDocument, doc)
}, "Adopting an Element called 'x<' should work.")

test(function() {
  var x = document.createElement(":good:times:")
  assert_equals(document.adoptNode(x), x);
  var doc = document.implementation.createDocument(null, null, null)
  assert_equals(doc.adoptNode(x), x)
  assert_equals(x.parentNode, null)
  assert_equals(x.ownerDocument, doc)
}, "Adopting an Element called ':good:times:' should work.")

test(function() {
  var doctype = document.doctype;
  assert_equals(doctype.parentNode, document)
  assert_equals(doctype.ownerDocument, document)
  assert_equals(document.adoptNode(doctype), doctype)
  assert_equals(doctype.parentNode, null)
  assert_equals(doctype.ownerDocument, document)
}, "Explicitly adopting a DocumentType should work.")

test(function() {
  var doc = document.implementation.createDocument(null, null, null)
  assert_throws("NOT_SUPPORTED_ERR", function() { document.adoptNode(doc) })
}, "Adopting a Document should throw.")
</script>
