// 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 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);
}
