| Index: packages/async/test/byte_collection_test.dart
|
| diff --git a/packages/async/test/byte_collection_test.dart b/packages/async/test/byte_collection_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b87b074131290d943b4d20515b6843253a5c9fd9
|
| --- /dev/null
|
| +++ b/packages/async/test/byte_collection_test.dart
|
| @@ -0,0 +1,90 @@
|
| +// Copyright (c) 2017, 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.
|
| +
|
| +import "dart:async";
|
| +
|
| +import "package:test/test.dart";
|
| +import "package:async/async.dart";
|
| +
|
| +void main() {
|
| + group("collectBytes", () {
|
| + test("simple list and overflow", () {
|
| + var result = collectBytes(new Stream.fromIterable([
|
| + [0],
|
| + [1],
|
| + [2],
|
| + [256]
|
| + ]));
|
| + expect(result, completion([0, 1, 2, 0]));
|
| + });
|
| +
|
| + test("no events", () {
|
| + var result = collectBytes(new Stream.fromIterable([]));
|
| + expect(result, completion([]));
|
| + });
|
| +
|
| + test("empty events", () {
|
| + var result = collectBytes(new Stream.fromIterable([[], []]));
|
| + expect(result, completion([]));
|
| + });
|
| +
|
| + test("error event", () {
|
| + var result = collectBytes(new Stream.fromIterable(
|
| + new Iterable.generate(3, (n) => n == 2 ? throw "badness" : [n])));
|
| + expect(result, throwsA("badness"));
|
| + });
|
| + });
|
| +
|
| + group("collectBytes", () {
|
| + test("simple list and overflow", () {
|
| + var result = collectBytesCancelable(new Stream.fromIterable([
|
| + [0],
|
| + [1],
|
| + [2],
|
| + [256]
|
| + ]));
|
| + expect(result.value, completion([0, 1, 2, 0]));
|
| + });
|
| +
|
| + test("no events", () {
|
| + var result = collectBytesCancelable(new Stream.fromIterable([]));
|
| + expect(result.value, completion([]));
|
| + });
|
| +
|
| + test("empty events", () {
|
| + var result = collectBytesCancelable(new Stream.fromIterable([[], []]));
|
| + expect(result.value, completion([]));
|
| + });
|
| +
|
| + test("error event", () {
|
| + var result = collectBytesCancelable(new Stream.fromIterable(
|
| + new Iterable.generate(3, (n) => n == 2 ? throw "badness" : [n])));
|
| + expect(result.value, throwsA("badness"));
|
| + });
|
| +
|
| + test("cancelled", () async {
|
| + var sc = new StreamController<List<int>>();
|
| + var result = collectBytesCancelable(sc.stream);
|
| + // Value never completes.
|
| + result.value.whenComplete(expectAsync0(() {}, count: 0));
|
| +
|
| + expect(sc.hasListener, isTrue);
|
| + sc.add([1, 2]);
|
| + await nextTimerTick();
|
| + expect(sc.hasListener, isTrue);
|
| + sc.add([3, 4]);
|
| + await nextTimerTick();
|
| + expect(sc.hasListener, isTrue);
|
| + result.cancel();
|
| + expect(sc.hasListener, isFalse); // Cancelled immediately.
|
| + var replacement = await result.valueOrCancellation();
|
| + expect(replacement, isNull);
|
| + await nextTimerTick();
|
| + sc.close();
|
| + await nextTimerTick();
|
| + });
|
| + });
|
| +}
|
| +
|
| +Future nextTimerTick() => new Future(() {});
|
|
|