// 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 abstract Timer createPeriodicTimer(Duration period,
///    void callback(Timer timer))
/// Creates a periodic Timer where the callback is executed in this zone.
/// @description Checks that periodic timer is created and that callback
/// is executed in this zone.
/// @author ilya

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

void test(Zone zone) {
  int count = 0;
  Timer? timer;

  asyncStart();
  timer = zone.createPeriodicTimer(new Duration(milliseconds: 10), (_timer) {
    Expect.equals(timer, _timer);
    Expect.equals(zone, Zone.current);
    if (++count > 5) {
      _timer.cancel();
      asyncEnd();
    }
  });
}

main() {
  test(Zone.current);
  test(Zone.current.fork());
}
