Index: test/byte_collection_test.dart |
diff --git a/test/byte_collection_test.dart b/test/byte_collection_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6afc6997c6f6f76bdb1a6f9621060bd8d4b1ce0b |
--- /dev/null |
+++ b/test/byte_collection_test.dart |
@@ -0,0 +1,101 @@ |
+// 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 "dart:typed_data"; |
+ |
+import "package:test/test.dart"; |
+import "package:async/async.dart" show byteCollector, collectBytes, Result; |
+ |
+void main() { |
+ group("collectBytes", () { |
+ test("simple list and overflow", () { |
+ Future<Uint8List> result = collectBytes(streamOf([[0], [1], [2], [256]])); |
nweiz
2017/01/25 23:00:40
"var", also below.
Lasse Reichstein Nielsen
2017/01/26 09:43:06
Done.
|
+ var expected = new Uint8List.fromList([0, 1, 2, 0]); |
nweiz
2017/01/25 23:00:40
Just compare against a plain list—test doesn't val
Lasse Reichstein Nielsen
2017/01/26 09:43:06
Done.
|
+ expect(result, completion(expected)); |
+ }); |
+ |
+ test("no events", () { |
+ Future<Uint8List> result = collectBytes(streamOf([])); |
+ var expected = new Uint8List(0); |
+ expect(result, completion(expected)); |
+ }); |
+ |
+ test("empty events", () { |
+ Future<Uint8List> result = collectBytes(streamOf([[], []])); |
+ var expected = new Uint8List(0); |
+ expect(result, completion(expected)); |
+ }); |
+ |
+ test("error event", () { |
+ Future<Uint8List> result = collectBytes(streamOf( |
+ new Iterable.generate(3, (n) => n == 2 ? throw "badness" : [n]))); |
+ expect(result, throwsA("badness")); |
+ }); |
+ }); |
+ |
+ group ("byteCollector", () { |
+ test("simple list and overflow", () { |
+ var stream = streamOf([[0], [1], [2], [256]]); |
+ Stream<Uint8List> result = stream.transform(byteCollector); |
+ var expected = new Uint8List.fromList([0, 1, 2, 0]); |
+ expect(result.single, completion(expected)); |
+ }); |
+ |
+ test("no events", () { |
+ Stream<Uint8List> result = streamOf([]).transform(byteCollector); |
+ var expected = new Uint8List(0); |
+ expect(result.single, completion(expected)); |
+ }); |
+ |
+ test("empty events", () { |
+ Stream<Uint8List> result = streamOf([[], []]).transform(byteCollector); |
+ var expected = new Uint8List(0); |
+ expect(result.single, completion(expected)); |
+ }); |
+ |
+ test("error event", () async { |
+ var stream = streamOf( |
+ new Iterable.generate(3, (n) => n == 2 ? throw "badness" : [n])); |
+ Stream<Uint8List> result = stream.transform(byteCollector); |
+ var expected = new Uint8List.fromList([0, 1]); |
+ var results = await Result.captureStream(result).toList(); |
+ expect(results[0].asFuture, throwsA("badness")); |
+ expect(results[1].asFuture, completion(expected)); |
+ expect(results.length, 2); |
+ }); |
+ |
+ test("multiple error events", () async { |
+ var stream = () async* { |
+ yield [0]; |
+ yield* new Future.error("badness1").asStream(); |
+ yield [2]; |
+ yield* new Future.error("badness3").asStream(); |
+ yield [4]; |
+ }(); |
+ Stream<Uint8List> result = stream.transform(byteCollector); |
+ var expected = new Uint8List.fromList([0, 2, 4]); |
+ var results = await Result.captureStream(result).toList(); |
+ expect(results[0].asFuture, throwsA("badness1")); |
+ expect(results[1].asFuture, throwsA("badness3")); |
+ expect(results[2].asFuture, completion(expected)); |
+ expect(results.length, 3); |
+ }); |
+ |
+ |
+ |
nweiz
2017/01/25 23:00:40
Extra empty lines.
Lasse Reichstein Nielsen
2017/01/26 09:43:06
Done.
|
+ }); |
+ |
+ |
+ |
+ |
+ |
+} |
+ |
+streamOf(Iterable<List<int>> lists) async* { |
nweiz
2017/01/25 23:00:40
Why not just use new Stream.fromIterable()?
Lasse Reichstein Nielsen
2017/01/26 09:43:06
Too easy!
I had something more complicated here or
|
+ for (var list in lists) yield list; |
+} |
+ |
+ |
+ |