blob: 1886f48f40d38f132124a60dc0eb623e8d435d0b [file] [log] [blame]
// 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 encounterd.
* @author ilya
*/
import "dart:async";
import "dart:isolate";
import "../../../Utils/expect.dart";
import "IsolateStream.dart" as IsolateStream;
main() {
int count = 0;
int first = 0;
bool encountered = false;
bool test(var element) {
bool res = element % 10 == 0;
if (res && !encountered) {
encountered = true;
first = element;
}
return res;
}
asyncStart();
ReceivePort stream =
IsolateStream.fromIterable(new Iterable.generate(100, (_) => ++count));
Future<bool> f = stream.any(test);
f.then((x) {
Expect.isTrue(x);
Expect.isTrue(encountered);
Expect.equals(10, first);
asyncEnd();
});
}