// 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 forEach(Iterable input, dynamic f(element))
/// Any errors will cause the iteration to stop and will be piped through the
/// returned Future.
/// @description Checks that an asynchronous error in the action function
/// causes the iteration to stop and is piped through the returned Future.
/// @author a.semenov@unipro.ru

import "dart:async";
import "../../../Utils/expect.dart";

main() {
  List log = [];

  dynamic f(element) {
    log.add(element);
    return element==2 ? new Future.error("@") : new Future.value(null);
  }

  asyncStart();
  Future.forEach([0,1,2,3,4], f).catchError((Object error) {
    Expect.equals("@", error);
    Expect.listEquals([0,1,2], log);
    asyncEnd();
  });
}
