| Index: tests/lib_strong/async/stream_state_nonzero_timer_test.dart
|
| diff --git a/tests/lib_strong/async/stream_state_nonzero_timer_test.dart b/tests/lib_strong/async/stream_state_nonzero_timer_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2aac0009c550dbdb416582369fd259923d1dc37d
|
| --- /dev/null
|
| +++ b/tests/lib_strong/async/stream_state_nonzero_timer_test.dart
|
| @@ -0,0 +1,102 @@
|
| +// 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 the event/callback protocol of the stream implementations.
|
| +// Uses a non-zero timer so it fails on d8.
|
| +
|
| +library stream_state_nonzero_timer_test;
|
| +
|
| +import "dart:async";
|
| +import "package:unittest/unittest.dart";
|
| +import "stream_state_helper.dart";
|
| +
|
| +const ms5 = const Duration(milliseconds: 5);
|
| +
|
| +// Testing pause/resume, some with non-zero duration. This only makes sense for
|
| +// non-broadcast streams, since broadcast stream subscriptions handle their
|
| +// own pauses.
|
| +
|
| +main() {
|
| + var p = "StreamController";
|
| +
|
| + test("$p-sub-data/pause/resume/pause/resume-done", () {
|
| + var t = new StreamProtocolTest();
|
| + t..expectListen()
|
| + ..expectData(42, () {
|
| + t.pause();
|
| + })
|
| + ..expectPause(() { t.resume(); })
|
| + ..expectResume(() { t.pause(); })
|
| + ..expectPause(() { t.resume(); })
|
| + ..expectResume(() { t.close(); })
|
| + ..expectCancel()
|
| + ..expectDone(t.terminate);
|
| + t..listen()..add(42);
|
| + });
|
| +
|
| + test("$p-sub-data/pause-done", () {
|
| + var t = new StreamProtocolTest();
|
| + t..expectListen()
|
| + ..expectData(42, () {
|
| + t.pause(new Future.delayed(ms5, () => null));
|
| + })
|
| + ..expectPause()
|
| + ..expectCancel()
|
| + ..expectDone(t.terminate);
|
| + // We are calling "close" while the controller is actually paused,
|
| + // and it will stay paused until the pending events are sent.
|
| + t..listen()..add(42)..close();
|
| + });
|
| +
|
| + test("$p-sub-data/pause-resume/done", () {
|
| + var t = new StreamProtocolTest();
|
| + t..expectListen()
|
| + ..expectData(42, () {
|
| + t.pause(new Future.delayed(ms5, () => null));
|
| + })
|
| + ..expectPause()
|
| + ..expectResume(t.close)
|
| + ..expectCancel()
|
| + ..expectDone(t.terminate);
|
| + t..listen()..add(42);
|
| + });
|
| +
|
| + test("$p-sub-data/data+pause-data-resume-done", () {
|
| + var t = new StreamProtocolTest();
|
| + t..expectListen()
|
| + ..expectData(42, () {
|
| + t.add(43);
|
| + t.pause(new Future.delayed(ms5, () => null));
|
| + // Should now be paused until the future finishes.
|
| + // After that, the controller stays paused until the pending queue
|
| + // is empty.
|
| + })
|
| + ..expectPause()
|
| + ..expectData(43)
|
| + ..expectResume(t.close)
|
| + ..expectCancel()
|
| + ..expectDone(t.terminate);
|
| + t..listen()..add(42);
|
| + });
|
| +
|
| + test("$p-pause-during-callback", () {
|
| + var t = new StreamProtocolTest();
|
| + t..expectListen()
|
| + ..expectData(42, () {
|
| + t.pause();
|
| + })
|
| + ..expectPause(() {
|
| + t.resume();
|
| + })
|
| + ..expectResume(() {
|
| + t.pause();
|
| + t.resume();
|
| + t.close();
|
| + })
|
| + ..expectCancel()
|
| + ..expectDone(t.terminate);
|
| + t..listen()
|
| + ..add(42);
|
| + });
|
| +}
|
|
|