// Copyright (c) 2011, 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 Future<bool> any(bool test(T element))
/// Checks whether test accepts any element provided by this stream.
/// Completes the Future when the answer is known.
/// @description Checks that Future completes when the first matching element
/// is encountered.
/// @author ilya

library any_A01_t02;
import "../../../Utils/expect.dart";

void test(CreateStreamFunction create) {
  int count = 0;
  asyncStart();
  int last = -1;
  create(new Iterable<int>.generate(100, (_) => ++count))
    .any((x) => (last = x) % 10 == 0)
    .then((x) {
      Expect.isTrue(x);
      Expect.equals(10, last);
      asyncEnd();
    });
}
