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

Unified Diff: tests/lib_strong/async/stream_iterator_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_iterator_test.dart
diff --git a/tests/lib_strong/async/stream_iterator_test.dart b/tests/lib_strong/async/stream_iterator_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..bbd7f719ed5b8d2eacb051a4293592918ae06a2b
--- /dev/null
+++ b/tests/lib_strong/async/stream_iterator_test.dart
@@ -0,0 +1,95 @@
+// 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.
+
+import "dart:async";
+import "package:unittest/unittest.dart";
+
+main() {
+ test("stream iterator basic", () async {
+ var stream = createStream();
+ StreamIterator iterator = new StreamIterator(stream);
+ expect(iterator.current, isNull);
+ expect(await iterator.moveNext(), isTrue);
+ expect(iterator.current, 42);
+ expect(await iterator.moveNext(), isTrue);
+ expect(iterator.current, 37);
+ expect(await iterator.moveNext(), isFalse);
+ expect(iterator.current, isNull);
+ expect(await iterator.moveNext(), isFalse);
+ });
+
+ test("stream iterator prefilled", () async {
+ Stream stream = createStream();
+ StreamIterator iterator = new StreamIterator(stream);
+ await new Future.delayed(Duration.ZERO);
+ expect(iterator.current, isNull);
+ expect(await iterator.moveNext(), isTrue);
+ expect(iterator.current, 42);
+ expect(await iterator.moveNext(), isTrue);
+ expect(iterator.current, 37);
+ expect(await iterator.moveNext(), isFalse);
+ expect(iterator.current, isNull);
+ expect(await iterator.moveNext(), isFalse);
+ });
+
+ test("stream iterator error", () async {
+ Stream stream = createErrorStream();
+ StreamIterator iterator = new StreamIterator(stream);
+ expect(await iterator.moveNext(), isTrue);
+ expect(iterator.current, 42);
+ var hasNext = iterator.moveNext();
+ expect(hasNext, throwsA("BAD")); // This is an async expectation,
+ await hasNext.catchError((_){}); // so we have to wait for the future too.
+ expect(iterator.current, isNull);
+ expect(await iterator.moveNext(), isFalse);
+ expect(iterator.current, isNull);
+ });
+
+ test("stream iterator current/moveNext during move", () async {
+ Stream stream = createStream();
+ StreamIterator iterator = new StreamIterator(stream);
+ var hasNext = iterator.moveNext();
+ expect(iterator.moveNext, throwsA(isStateError));
+ expect(await hasNext, isTrue);
+ expect(iterator.current, 42);
+ iterator.cancel();
+ });
+
+ test("stream iterator error during cancel", () async {
+ Stream stream = createCancelErrorStream();
+ StreamIterator iterator = new StreamIterator(stream);
+ for (int i = 0; i < 10; i++) {
+ expect(await iterator.moveNext(), isTrue);
+ expect(iterator.current, i);
+ }
+ var hasNext = iterator.moveNext(); // active moveNext will be completed.
+ var cancel = iterator.cancel();
+ expect(cancel, throwsA("BAD"));
+ expect(await hasNext, isFalse);
+ expect(await iterator.moveNext(), isFalse);
+ });
+
+}
+
+Stream createStream() async* {
+ yield 42;
+ yield 37;
+}
+
+Stream createErrorStream() async* {
+ yield 42;
+ // Emit an error without stopping the generator.
+ yield* (new Future.error("BAD").asStream());
+ yield 37;
+}
+
+/// Create a stream that throws when cancelled.
+Stream createCancelErrorStream() async* {
+ int i = 0;
+ try {
+ while (true) yield i++;
+ } finally {
+ throw "BAD";
+ }
+}
« no previous file with comments | « tests/lib_strong/async/stream_iterator_double_cancel_test.dart ('k') | tests/lib_strong/async/stream_join_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698