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