// 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))
 *    Perform an async operation for each element of the iterable, in turn.
 *    Runs f for each element in input in order, moving to the next element
 * only when the Future returned by f completes.
 * @description Checks that [f] is executed for each element in input with
 * respect to input order.
 * @author a.semenov@unipro.ru
 */
import "dart:async";
import "../../../Utils/expect.dart";

void check(List input) {
  List log = [];

  dynamic f(element) {
    log.add(element);
    return new Future.value(null);
  }

  asyncStart();
  Future.forEach(input, f).then((_) {
    Expect.listEquals(input, log);
    asyncEnd();
  });
}

main() {
  check([0, 1, 2, 3, 4]);
  check(["a", "b", "c", "d"]);
  check([]);
  check([0, null, "a", 3.14, true, false]);
}

