// 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.

library timer_test;

import 'dart:async';
import 'package:expect/expect.dart';
import 'package:async_helper/async_helper.dart';

const ms = const Duration(milliseconds: 1);

expectGTE(min, actual, msg) {
  if (actual >= min) return;
  Expect.fail(msg.replaceAll('{0}', "$min").replaceAll('{1}', "$actual"));
}

main() {
  int interval = 100;
  // Most browsers can trigger timers too early. Test data shows instances where
  // timers fire even 15ms early. We add a safety margin to prevent flakiness
  // when running this test on affected platforms.
  int safetyMargin = const bool.fromEnvironment('dart.library.js') ? 40 : 0;

  asyncStart();
  var sw = new Stopwatch()..start();
  int nextTick = 1;
  new Timer.periodic(ms * interval, (t) {
    expectGTE(nextTick, t.tick, "tick {1} before expect next tick {0}.");
    int time = sw.elapsedMilliseconds;
    int minTime = interval * t.tick - safetyMargin;
    expectGTE(minTime, time, "Actual time {1} before {0} at tick ${t.tick}");
    while (sw.elapsedMilliseconds < time + 3 * interval) {
      // idle.
    }
    nextTick = t.tick + 2; // At least increment by two, probably more.
    if (t.tick > 20) {
      t.cancel();
      asyncEnd();
    }
  });
}
