| Index: tests/lib/async/stream_state_nonzero_timer_test.dart
|
| diff --git a/tests/lib/async/stream_state_nonzero_timer_test.dart b/tests/lib/async/stream_state_nonzero_timer_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..63a9e9d9c3d16ee96d1573bd4340eef29a4112ff
|
| --- /dev/null
|
| +++ b/tests/lib/async/stream_state_nonzero_timer_test.dart
|
| @@ -0,0 +1,83 @@
|
| +// 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 "../../../pkg/unittest/lib/unittest.dart";
|
| +import "stream_state_helper.dart";
|
| +
|
| +const ms5 = const Duration(milliseconds: 5);
|
| +
|
| +main() {
|
| + mainTest(false);
|
| + mainTest(true);
|
| +}
|
| +
|
| +mainTest(bool broadcast) {
|
| + var p = broadcast ? "BC" : "SC";
|
| +
|
| + test("$p-sub-data/pause/resume/pause/resume-done", () {
|
| + var t = new StreamProtocolTest(broadcast);
|
| + t..expectSubscription(true, false)
|
| + ..expectData(42, () {
|
| + t.pause();
|
| + })
|
| + ..expectPause(true, () { t.resume(); })
|
| + ..expectPause(false, () { t.pause(); })
|
| + ..expectPause(true, () { t.resume(); })
|
| + ..expectPause(false, () { t.close(); })
|
| + ..expectDone()
|
| + ..expectSubscription(false, false);
|
| + t..subscribe()..add(42);
|
| + });
|
| +
|
| + test("$p-sub-data/pause-done", () {
|
| + var t = new StreamProtocolTest(broadcast);
|
| + t..expectSubscription(true, false)
|
| + ..expectData(42, () {
|
| + t.pause(new Future.delayed(ms5, () => null));
|
| + })
|
| + ..expectPause(true)
|
| + ..expectDone()
|
| + ..expectSubscription(false, false);
|
| + // We are calling "close" while the controller is actually paused,
|
| + // and it will stay paused until the pending events are sent.
|
| + t..subscribe()..add(42)..close();
|
| + });
|
| +
|
| + test("$p-sub-data/pause-resume/done", () {
|
| + var t = new StreamProtocolTest(broadcast);
|
| + t..expectSubscription(true, false)
|
| + ..expectData(42, () {
|
| + t.pause(new Future.delayed(ms5, () => null));
|
| + })
|
| + ..expectPause(true)
|
| + ..expectPause(false, () { t.close(); })
|
| + ..expectDone()
|
| + ..expectSubscription(false, false);
|
| + t..subscribe()..add(42);
|
| + });
|
| +
|
| + test("$p-sub-data/data+pause-data-resume-done", () {
|
| + var t = new StreamProtocolTest(broadcast);
|
| + t..expectSubscription(true, false)
|
| + ..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(true)
|
| + ..expectData(43)
|
| + ..expectPause(false, () { t.close(); })
|
| + ..expectDone()
|
| + ..expectSubscription(false, false);
|
| + t..subscribe()..add(42);
|
| + });
|
| +}
|
|
|