// Copyright (c) 2016, 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 doWhile(FutureOr<bool> f())
/// Perform an async operation repeatedly until it returns false.
/// . . .
/// Otherwise it waits for the returned Future to complete.
///
/// @description Checks that if [f] returns not completed future, [doWhile]
/// waits for the returned Future to complete.
/// @author ngl@unipro.ru

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

const int N = 4;

main() {
  int num = 0;

  FutureOr<bool> f() {
    num++;
    return new Future.delayed(durationMs(100), () => (num < N));
  }

  asyncStart();
  Future.doWhile(f).then(
    (_) {
      Expect.equals(N, num);
      asyncEnd();
    }
  );
}
