| Index: mojo/public/dart/third_party/barback/test/stream_replayer_test.dart
|
| diff --git a/mojo/public/dart/third_party/barback/test/stream_replayer_test.dart b/mojo/public/dart/third_party/barback/test/stream_replayer_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..802db14f663c9c3921163d75e5b245a8eae82515
|
| --- /dev/null
|
| +++ b/mojo/public/dart/third_party/barback/test/stream_replayer_test.dart
|
| @@ -0,0 +1,101 @@
|
| +// 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.
|
| +
|
| +library barback.test.stream_replayer_test;
|
| +
|
| +import 'dart:async';
|
| +
|
| +import 'package:barback/src/utils.dart';
|
| +import 'package:barback/src/utils/stream_replayer.dart';
|
| +import 'package:unittest/unittest.dart';
|
| +
|
| +import 'utils.dart';
|
| +
|
| +main() {
|
| + initConfig();
|
| +
|
| + test("a replay that's retrieved before the stream is finished replays the "
|
| + "stream", () {
|
| + var controller = new StreamController<int>();
|
| + var replay = new StreamReplayer<int>(controller.stream).getReplay();
|
| +
|
| + controller.add(1);
|
| + controller.add(2);
|
| + controller.add(3);
|
| + controller.close();
|
| +
|
| + expect(replay.toList(), completion(equals([1, 2, 3])));
|
| + });
|
| +
|
| + test("a replay that's retrieved after the stream is finished replays the "
|
| + "stream", () {
|
| + var controller = new StreamController<int>();
|
| + var replayer = new StreamReplayer<int>(controller.stream);
|
| +
|
| + controller.add(1);
|
| + controller.add(2);
|
| + controller.add(3);
|
| + controller.close();
|
| +
|
| + expect(replayer.getReplay().toList(), completion(equals([1, 2, 3])));
|
| + });
|
| +
|
| + test("multiple replays each replay the stream", () {
|
| + var controller = new StreamController<int>();
|
| + var replayer = new StreamReplayer<int>(controller.stream);
|
| +
|
| + var replay1 = replayer.getReplay();
|
| + controller.add(1);
|
| + controller.add(2);
|
| + controller.add(3);
|
| + controller.close();
|
| + var replay2 = replayer.getReplay();
|
| +
|
| + expect(replay1.toList(), completion(equals([1, 2, 3])));
|
| + expect(replay2.toList(), completion(equals([1, 2, 3])));
|
| + });
|
| +
|
| + test("the replayed stream doesn't close until the source stream closes", () {
|
| + var controller = new StreamController<int>();
|
| + var replay = new StreamReplayer<int>(controller.stream).getReplay();
|
| + var isClosed = false;
|
| + replay.last.then((_) {
|
| + isClosed = true;
|
| + });
|
| +
|
| + controller.add(1);
|
| + controller.add(2);
|
| + controller.add(3);
|
| +
|
| + expect(pumpEventQueue().then((_) {
|
| + expect(isClosed, isFalse);
|
| + controller.close();
|
| + return pumpEventQueue();
|
| + }).then((_) {
|
| + expect(isClosed, isTrue);
|
| + }), completes);
|
| + });
|
| +
|
| + test("the wrapped stream isn't opened if there are no replays", () {
|
| + var isOpened = false;
|
| + var controller = new StreamController<int>(onListen: () {
|
| + isOpened = true;
|
| + });
|
| + var replayer = new StreamReplayer<int>(controller.stream);
|
| +
|
| + expect(pumpEventQueue().then((_) => isOpened), completion(isFalse));
|
| + });
|
| +
|
| + test("the wrapped stream isn't opened if no replays are opened", () {
|
| + var isOpened = false;
|
| + var controller = new StreamController<int>(onListen: () {
|
| + isOpened = true;
|
| + });
|
| + var replayer = new StreamReplayer<int>(controller.stream);
|
| + replayer.getReplay();
|
| + replayer.getReplay();
|
| +
|
| + expect(pumpEventQueue().then((_) => isOpened), completion(isFalse));
|
| + });
|
| +}
|
|
|