// 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/legacy/async_minitest.dart'; // ignore: deprecated_member_use const int STARTTIMEOUT = 1050; const int DECREASE = 200; const int ITERATIONS = 5; Stopwatch stopwatch = new Stopwatch(); int timeout = STARTTIMEOUT; int iteration = 0; // Some browsers (Firefox and IE so far) can trigger too early. Add a safety // margin. We use identical(1, 1.0) as an easy way to know if the test is // compiled by dart2js. int get safetyMargin => identical(1, 1.0) ? 100 : 0; void timeoutHandler() { expect( stopwatch.elapsedMilliseconds + safetyMargin, greaterThanOrEqualTo(timeout), ); if (iteration < ITERATIONS) { iteration++; timeout = timeout - DECREASE; Duration duration = new Duration(milliseconds: timeout); stopwatch.reset(); new Timer(duration, expectAsync(timeoutHandler)); } } main() { test("timeout test", () { Duration duration = new Duration(milliseconds: timeout); stopwatch.start(); new Timer(duration, expectAsync(timeoutHandler)); }); }