| Index: tests/lib/async/stream_periodic3_test.dart
|
| diff --git a/tests/lib/async/stream_periodic3_test.dart b/tests/lib/async/stream_periodic3_test.dart
|
| index e46e29d74eaac59d079ea3d240fc71ec723ca076..7f31d7511e2a5dbf84e8e516ef3b1e37f5a77184 100644
|
| --- a/tests/lib/async/stream_periodic3_test.dart
|
| +++ b/tests/lib/async/stream_periodic3_test.dart
|
| @@ -8,15 +8,21 @@ library dart.test.stream_from_iterable;
|
| import "dart:async";
|
| import '../../../pkg/unittest/lib/unittest.dart';
|
|
|
| +// The stopwatch is more precise than the Timer. It can happen that
|
| +// the TIMEOUT triggers *slightly* too early on the VM. So we add a millisecond
|
| +// as safetymargin.
|
| +// Some browsers (Firefox and IE so far) can trigger too early. So we add more
|
| +// 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) ? 5 : 1;
|
| +
|
| main() {
|
| test("stream-periodic3", () {
|
| Stopwatch watch = new Stopwatch()..start();
|
| Stream stream = new Stream.periodic(const Duration(milliseconds: 1),
|
| (x) => x);
|
| stream.take(10).listen((_) { }, onDone: expectAsync0(() {
|
| - int microsecs = watch.elapsedMicroseconds;
|
| - // Give it some slack. The Stopwatch is more precise than the timers.
|
| - int millis = (microsecs + 200) ~/ 1000;
|
| + int millis = watch.elapsedMilliseconds + safetyMargin;
|
| expect(millis, greaterThan(10));
|
| }));
|
| });
|
|
|