// 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 List<Node> getElementsByClassName(String name)
/// Returns a list of nodes with the given class name inside this element.
/// W3C: The classes argument is interpreted as a space-separated list of classes.
/// @description Checks that if name is a space separated list of class names,
/// nodes having all specified classes are collected.

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

main() {
  IFrameElement x = new IFrameElement();
  x.append(new Element.html('''<div class="foo bar"> first
           <table class="foo"></table>
           <button class="foo bar">second</button>
           <span class="bar foo"> third
             <pre class="foo baz bar">forth</pre>
           </span>
         </div>''', treeSanitizer: new NullTreeSanitizer()));

  var y = x.getElementsByClassName('foo bar');

  Expect.equals(4, y.length);
}
