Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Unified Diff: tests/lib_strong/async/stream_from_iterable_test.dart

Issue 2802973005: Migrate async tests to strong (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tests/lib_strong/async/stream_from_iterable_test.dart
diff --git a/tests/lib_strong/async/stream_from_iterable_test.dart b/tests/lib_strong/async/stream_from_iterable_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..7e58453f7db1d96ec1dcb113516159bbbdd5e486
--- /dev/null
+++ b/tests/lib_strong/async/stream_from_iterable_test.dart
@@ -0,0 +1,151 @@
+// 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 merging streams.
+library dart.test.stream_from_iterable;
+
+import "package:expect/expect.dart";
+import "dart:async";
+import 'package:unittest/unittest.dart';
+import 'event_helper.dart';
+
+class IterableTest<T> {
+ static int counter = 0;
+ Iterable<T> iterable;
+ IterableTest(this.iterable);
+ void run() {
+ test("stream from iterable ${counter++}", () {
+ Events expected = new Events.fromIterable(iterable);
+ Stream<T> stream = new Stream<T>.fromIterable(iterable);
+ Events actual = new Events.capture(stream);
+ actual.onDone(expectAsync(() {
+ Expect.listEquals(expected.events, actual.events);
+ }));
+ });
+ }
+}
+
+main() {
+ new IterableTest([]).run();
+ new IterableTest([1]).run();
+ new IterableTest([1, "two", true, null]).run();
+ new IterableTest<int>([1, 2, 3, 4]).run();
+ new IterableTest<String>(["one", "two", "three", "four"]).run();
+ new IterableTest<int>(new Iterable<int>.generate(1000, (i) => i)).run();
+ new IterableTest<String>(new Iterable<int>.generate(1000, (i) => i)
+ .map((i) => "$i")).run();
+
+ Iterable<int> iter = new Iterable.generate(25, (i) => i * 2);
+
+ test("iterable-toList", () {
+ new Stream.fromIterable(iter).toList().then(expectAsync((actual) {
+ List expected = iter.toList();
+ Expect.equals(25, expected.length);
+ Expect.listEquals(expected, actual);
+ }));
+ });
+
+ test("iterable-mapped-toList", () {
+ new Stream.fromIterable(iter)
+ .map((i) => i * 3)
+ .toList()
+ .then(expectAsync((actual) {
+ List expected = iter.map((i) => i * 3).toList();
+ Expect.listEquals(expected, actual);
+ }));
+ });
+
+ test("iterable-paused", () {
+ Stream stream = new Stream.fromIterable(iter);
+ Events actual = new Events();
+ StreamSubscription subscription;
+ subscription = stream.listen((int value) {
+ actual.add(value);
+ // Do a 10 ms pause during the playback of the iterable.
+ Duration duration = const Duration(milliseconds: 10);
+ if (value == 20) {
+ subscription.pause(new Future.delayed(duration, () {}));
+ }
+ }, onDone: expectAsync(() {
+ actual.close();
+ Events expected = new Events.fromIterable(iter);
+ Expect.listEquals(expected.events, actual.events);
+ }));
+ });
+
+ test("iterable-single-subscription", () {
+ Stream stream = new Stream.fromIterable(iter);
+ stream.listen((x){});
+ Expect.throws(() { stream.listen((x){}); },
+ (e) => e is StateError);
+ });
+
+ test("regression-14332", () {
+ // Regression test for http://dartbug.com/14332.
+ // This should succeede.
+ var from = new Stream.fromIterable([1,2,3,4,5]);
+
+ var c = new StreamController();
+ var sink = c.sink;
+
+ var done = expectAsync((){}, count: 2);
+
+ // if this goes first, test failed (hanged). Swapping addStream and toList
+ // made failure go away.
+ sink.addStream(from).then((_) {
+ c.close();
+ done();
+ });
+
+ c.stream.toList().then((x) {
+ Expect.listEquals([1,2,3,4,5], x);
+ done();
+ });
+ });
+
+ test("regression-14334-a", () {
+ var from = new Stream.fromIterable([1,2,3,4,5]);
+
+ // odd numbers as data events, even numbers as error events
+ from = from.map((x) => x.isOdd ? x : throw x);
+
+ var c = new StreamController();
+ var sink = c.sink;
+
+ var done = expectAsync((){}, count: 2);
+
+ var data = [], errors = [];
+ c.stream.listen(data.add, onError: errors.add, onDone: () {
+ Expect.listEquals([1], data);
+ Expect.listEquals([2], errors);
+ done();
+ });
+ sink.addStream(from).then((_) {
+ c.close();
+ done();
+ });
+ });
+
+ test("regression-14334-b", () {
+ var from = new Stream.fromIterable([1,2,3,4,5]);
+
+ // odd numbers as data events, even numbers as error events
+ from = from.map((x) => x.isOdd ? x : throw x);
+
+ var c = new StreamController();
+
+ var done = expectAsync((){}, count: 2);
+
+ var data = [], errors = [];
+ c.stream.listen(data.add, onError: errors.add, onDone: () {
+ Expect.listEquals([1, 3, 5], data);
+ Expect.listEquals([2, 4], errors);
+ done();
+ });
+ c.addStream(from, cancelOnError: false).then((_) {
+ c.close();
+ done();
+ });
+ });
+}
« no previous file with comments | « tests/lib_strong/async/stream_from_futures_test.dart ('k') | tests/lib_strong/async/stream_iterator_double_cancel_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698