/*
 * 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 final Node parentNode
 * The parent node of this node.
 * from DOM-lelvel-3:  if a node has just been created and not yet added to the tree,
 * or if it has been removed from the tree, this is null. 
 * @description Checks expected parentNode values
 */
import "dart:html";
import "../../../Utils/expect.dart";

void check(Node x) {
  Expect.equals(null, x.parentNode, "before append $x");
  var body = document.body;
  body?.append(x);
  Expect.equals(body, x.parentNode, "before remove $x");

  x.remove();
  Expect.equals(null, x.parentNode, "after remove $x");
}

main() {
  List<Node> targets = [
    new Comment("comment"),
    new Text("text"),
//    new DocumentFragment(),
  ];
  for (Node x in targets) {
    check(x);
  }
}
