/*
 * 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 ShadowRoot createShadowRoot()
 * Creates a new shadow root for this shadow host.
 * from W3C: The nodeType attribute of a ShadowRoot instance must return
 * DOCUMENT_FRAGMENT_NODE.
 * Accordingly, the nodeName attribute of a ShadowRoot instance must return
 * "#document-fragment".
 * @description Checks that a correct ShadowRoot is returned.
 * @issue 42002
 */
import "dart:html";
import "../../../Utils/expect.dart";

main() {
  IFrameElement x = new IFrameElement();
  print("before");
  ShadowRoot r = x.createShadowRoot();
  print("after");
  Expect.equals(Node.DOCUMENT_FRAGMENT_NODE, r.nodeType);
  Expect.equals("#document-fragment", r.nodeName);
}
