// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/// @assertion Node adoptNode(Node source)
/// Adopt node from an external document
/// from MDN: Adopts a node from an external document. The node and its subtree
/// is removed from the document it's in (if any), and its ownerDocument is changed
/// to the current document. The node can then be inserted into the current document.
/// @description Checks that the node and its subtree is removed from the document
/// and its ownerDocument is changed to the current document.

import "dart:html";
import "../../../Utils/expect.dart";

main() {
  var myButton = "myButton";
  HtmlDocument? d2 =
      document.implementation?.createHtmlDocument("Another Document");
  var x = new Element.html('<button id="$myButton"></button>');
  d2?.body?.append(x);
  Expect.equals(d2, x.ownerDocument);
  Expect.equals(x, d2?.getElementById(myButton));
  document.adoptNode(x);
  Expect.isNull(d2?.getElementById(myButton));
  Expect.equals(document, x.ownerDocument);
}
