// 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 bool contains(Node other)
/// Returns true if this node contains the specified node.
/// @description Checks the method's returned value.

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

// checks that the node n1 and its children are contained in document
void check(Node n1, bool expected) {
  Expect.equals(expected, document.contains(n1));
  var ch1 = n1.childNodes;
  if (ch1 == null) {
    return;
  }
  for (Node chn in ch1) {
    check(chn, expected);
  }
}

main() {
  check(document, true);
  var x = new Element.html('<span><button><div></div></button></span>');
  check(x, false);

  document.body?.append(x);
  check(x, true);
}
