// 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 Stream.periodic(Duration period,
 *     [T computation(int computationCount)])
 * Creates a stream that repeatedly emits events at period intervals.
 * If computation is omitted the event values will all be null.
 * @description Checks that created stream emits events at period intervals.
 * Checks that if computation is omitted the event value is null.
 * @author kaigorodov
 */
import "dart:async";
import "../../../Utils/expect.dart";

void check(int periodMs) {
  Duration period = durationMs(periodMs);
  const int maxCount = 5;
  int count = 0;

  Stopwatch sw = new Stopwatch();
  sw.start();

  asyncStart();

  Stream s = new Stream.periodic(period);
  StreamSubscription? ss;
  ss = s.listen((var event) {
    count++;
    Expect.isNull(event);
    Duration expected = period * count;
    Duration actual = sw.elapsed;
    Expect.isTrue(expected <= actual, "expected=$expected, actual=$actual");
    if (count >= maxCount) {
      ss?.cancel();
      asyncEnd();
    }
  });
}

main() {
  check(0);
  check(1);
  check(10);
  check(30);
  check(100);
}
