Chromium Code Reviews| Index: tests/lib/async/stream_periodic4_test.dart |
| diff --git a/tests/lib/async/stream_periodic4_test.dart b/tests/lib/async/stream_periodic4_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..934a566a9f8fa808ad217e6d418ba9ce190332ee |
| --- /dev/null |
| +++ b/tests/lib/async/stream_periodic4_test.dart |
| @@ -0,0 +1,37 @@ |
| +// Copyright (c) 2013, 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. |
| + |
| +// Test merging streams. |
| +library dart.test.stream_from_iterable; |
| + |
| +import "dart:async"; |
| +import '../../../pkg/unittest/lib/unittest.dart'; |
| + |
| +watchMs(Stopwatch watch) { |
| + int microsecs = watch.elapsedMicroseconds; |
| + // Give it some slack. The Stopwatch is more precise than the timers. |
| + return (microsecs + 200) ~/ 1000; |
|
Lasse Reichstein Nielsen
2013/03/14 06:54:46
Why + 200, and not +500. That would allow the same
floitsch
2013/03/14 13:27:34
done.
|
| +} |
| + |
| +main() { |
| + test("stream-periodic4", () { |
| + Stopwatch watch = new Stopwatch()..start(); |
| + Stream stream = new Stream.periodic(const Duration(milliseconds: 5), |
| + (x) => x); |
| + var subscription; |
| + subscription = stream.take(10).listen((i) { |
| + int ms = watchMs(watch); |
| + expect(ms, lessThan(100)); |
| + watch.reset(); |
| + if (i == 2) { |
| + subscription.pause(); |
| + watch.stop(); |
| + new Timer(const Duration(milliseconds: 150), () { |
| + watch.start(); |
| + subscription.resume(); |
| + }); |
| + } |
| + }, onDone: expectAsync0(() { })); |
| + }); |
| +} |