// 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 factory Timer.periodic(Duration duration, void callback(Timer timer))
/// Creates a new repeating timer.
/// The callback is invoked repeatedly with duration intervals until canceled.
/// @description Checks that callback function is called repeatedly after
/// the given duration.
/// @author kaigorodov

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

main() {
  int times = 10;
  int count = 0;
  Duration delay = durationMs(20);
  Stopwatch sw = new Stopwatch();
  sw.start();

  asyncStart();
  new Timer.periodic(delay, (Timer timer) {
    count++;
    Duration expected = delay * count;
    Duration actual = sw.elapsed;
    Expect.isTrue(expected <= actual, "expected=$expected, actual=$actual");
    if (count == times) {
      timer.cancel();
      asyncEnd();
    }
  });
}
