// 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 replaceWith(Node otherNode)
/// Replaces this node with another node.
/// @description Checks expected dom after replace

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

main() {
  //------
  var x =
      new Element.html('<div><iframe><pre></pre></iframe><span></span></div>');
  var oldElem = x.querySelector('iframe');
  Expect.isTrue(oldElem is IFrameElement);
  var newElem = new AnchorElement();

  oldElem?.replaceWith(newElem);
  Expect.equals('<div><a></a><span></span></div>', x.outerHtml,
      'replace subtree with single element');

  //------
  x = new Element.html('<div><a></a><span></span></div>');
  oldElem = x.querySelector('a');
  var newElem2 = new Element.html('<h1><pre></pre></h1>');

  oldElem?.replaceWith(newElem2);
  Expect.equals('<div><h1><pre></pre></h1><span></span></div>', x.outerHtml,
      'replace single element with subtree');
}
