// 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.

// @dart = 2.9

/// @assertion Node insertBefore(Node newChild, Node refChild)
/// Inserts node into this node directly before refChild.
/// from MDN: var insertedElement = parentElement.insertBefore(newElement, referenceElement);
/// - insertedElement The node being inserted, that is newElement
/// - parentElement The parent of the newly inserted node.
/// - newElement The node to insert.
/// - referenceElement The node before which newElement is inserted.
/// http://www.w3.org/: Document can have Element (maximum of one),
/// ProcessingInstruction, Comment, DocumentType
/// @description Checks expected dom after insert

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

main() {
  var x = new Comment("cool");
  document.insertBefore(x, document.firstChild);
  Expect.equals(document.firstChild, x, 'insert before existing child');

  Expect.throws(() {
    document.insertBefore(new Comment("cool"), new HRElement());
  }, null, 'insert before not existing child');
}
