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

Unified Diff: test/util/cancelable_future_test.dart

Issue 1414793015: Use the async package's CancelableOperation. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Created 5 years, 1 month 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
« no previous file with comments | « pubspec.yaml ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/util/cancelable_future_test.dart
diff --git a/test/util/cancelable_future_test.dart b/test/util/cancelable_future_test.dart
deleted file mode 100644
index 9bed0ba63147b349f3fe38c77ec1fda24e365b5f..0000000000000000000000000000000000000000
--- a/test/util/cancelable_future_test.dart
+++ /dev/null
@@ -1,255 +0,0 @@
-// Copyright (c) 2015, 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:async/async.dart';
-import 'package:test/src/util/cancelable_future.dart';
-import 'package:test/test.dart';
-
-void main() {
- group("without being canceled", () {
- var completer;
- setUp(() {
- completer = new CancelableCompleter(expectAsync(() {}, count: 0));
- });
-
- test("sends values to the future", () {
- expect(completer.future, completion(equals(1)));
- expect(completer.isCompleted, isFalse);
- completer.complete(1);
- expect(completer.isCompleted, isTrue);
- });
-
- test("sends errors to the future", () {
- expect(completer.future, throwsA("error"));
- expect(completer.isCompleted, isFalse);
- completer.completeError("error");
- expect(completer.isCompleted, isTrue);
- });
-
- test("sends values in a future to the future", () {
- expect(completer.future, completion(equals(1)));
- expect(completer.isCompleted, isFalse);
- completer.complete(new Future.value(1));
- expect(completer.isCompleted, isTrue);
- });
-
- test("sends errors in a future to the future", () {
- expect(completer.future, throwsA("error"));
- expect(completer.isCompleted, isFalse);
- completer.complete(new Future.error("error"));
- expect(completer.isCompleted, isTrue);
- });
-
- group("throws a StateError if completed", () {
- test("successfully twice", () {
- completer.complete(1);
- expect(() => completer.complete(1), throwsStateError);
- });
-
- test("successfully then unsuccessfully", () {
- completer.complete(1);
- expect(() => completer.completeError("error"), throwsStateError);
- });
-
- test("unsuccessfully twice", () {
- expect(completer.future, throwsA("error"));
- completer.completeError("error");
- expect(() => completer.completeError("error"), throwsStateError);
- });
-
- test("successfully then with a future", () {
- completer.complete(1);
- expect(() => completer.complete(new Completer().future),
- throwsStateError);
- });
-
- test("with a future then successfully", () {
- completer.complete(new Completer().future);
- expect(() => completer.complete(1), throwsStateError);
- });
-
- test("with a future twice", () {
- completer.complete(new Completer().future);
- expect(() => completer.complete(new Completer().future),
- throwsStateError);
- });
- });
-
- group("CancelableFuture.fromFuture", () {
- test("forwards values", () {
- expect(new CancelableFuture.fromFuture(new Future.value(1)),
- completion(equals(1)));
- });
-
- test("forwards errors", () {
- expect(new CancelableFuture.fromFuture(new Future.error("error")),
- throwsA("error"));
- });
- });
- });
-
- group("when canceled", () {
- test("causes the future never to fire", () async {
- var completer = new CancelableCompleter();
- completer.future.whenComplete(expectAsync(() {}, count: 0));
- completer.future.cancel();
-
- // Give the future plenty of time to fire if it's going to.
- await flushMicrotasks();
- completer.complete();
- await flushMicrotasks();
- });
-
- test("fires onCancel", () {
- var canceled = false;
- var completer;
- completer = new CancelableCompleter(expectAsync(() {
- expect(completer.isCanceled, isTrue);
- canceled = true;
- }));
-
- expect(canceled, isFalse);
- expect(completer.isCanceled, isFalse);
- expect(completer.isCompleted, isFalse);
- completer.future.cancel();
- expect(canceled, isTrue);
- expect(completer.isCanceled, isTrue);
- expect(completer.isCompleted, isFalse);
- });
-
- test("returns the onCancel future each time cancel is called", () {
- var completer = new CancelableCompleter(expectAsync(() {
- return new Future.value(1);
- }));
- expect(completer.future.cancel(), completion(equals(1)));
- expect(completer.future.cancel(), completion(equals(1)));
- expect(completer.future.cancel(), completion(equals(1)));
- });
-
- test("returns a future even if onCancel doesn't", () {
- var completer = new CancelableCompleter(expectAsync(() {}));
- expect(completer.future.cancel(), completes);
- });
-
- test("doesn't call onCancel if the completer has completed", () {
- var completer = new CancelableCompleter(expectAsync(() {}, count: 0));
- completer.complete(1);
- completer.future.whenComplete(expectAsync(() {}, count: 0));
- expect(completer.future.cancel(), completes);
- });
-
- test("does call onCancel if the completer has completed to an unfired "
- "Future", () {
- var completer = new CancelableCompleter(expectAsync(() {}));
- completer.complete(new Completer().future);
- expect(completer.future.cancel(), completes);
- });
-
- test("doesn't call onCancel if the completer has completed to a fired "
- "Future", () async {
- var completer = new CancelableCompleter(expectAsync(() {}, count: 0));
- completer.complete(new Future.value(1));
- await completer.future;
- expect(completer.future.cancel(), completes);
- });
-
- test("can be completed once after being canceled", () async {
- var completer = new CancelableCompleter();
- completer.future.whenComplete(expectAsync(() {}, count: 0));
- await completer.future.cancel();
- completer.complete(1);
- expect(() => completer.complete(1), throwsStateError);
- });
-
- test("throws a CancelException along non-canceled branches", () {
- var completer = new CancelableCompleter();
- expect(completer.future.then((_) {}), throwsCancelException);
- completer.future.then((_) {}).cancel();
- });
-
- test("doesn't throw a CancelException further along the canceled chain",
- () async {
- var completer = new CancelableCompleter();
- completer.future.then((_) {}).whenComplete(expectAsync((_) {}, count: 0));
- completer.future.cancel();
- await flushMicrotasks();
- });
- });
-
- group("asStream()", () {
- test("emits a value and then closes", () {
- var completer = new CancelableCompleter();
- expect(completer.future.asStream().toList(), completion(equals([1])));
- completer.complete(1);
- });
-
- test("emits an error and then closes", () {
- var completer = new CancelableCompleter();
- var queue = new StreamQueue(completer.future.asStream());
- expect(queue.next, throwsA("error"));
- expect(queue.hasNext, completion(isFalse));
- completer.completeError("error");
- });
-
- test("cancels the completer when the subscription is canceled", () {
- var completer = new CancelableCompleter(expectAsync(() {}));
- var sub = completer.future.asStream()
- .listen(expectAsync((_) {}, count: 0));
- expect(completer.future, throwsCancelException);
- sub.cancel();
- expect(completer.isCanceled, isTrue);
- });
- });
-
- group("timeout()", () {
- test("emits a value if one arrives before timeout", () {
- var completer = new CancelableCompleter();
- expect(
- completer.future.timeout(
- new Duration(hours: 1),
- onTimeout: expectAsync(() {}, count: 0)),
- completion(equals(1)));
- completer.complete(1);
- });
-
- test("emits an error if one arrives before timeout", () {
- var completer = new CancelableCompleter();
- expect(
- completer.future.timeout(
- new Duration(hours: 1),
- onTimeout: expectAsync(() {}, count: 0)),
- throwsA("error"));
- completer.completeError("error");
- });
-
- test("cancels the completer when the future times out", () async {
- var completer = new CancelableCompleter(expectAsync(() {}));
- expect(completer.future.timeout(Duration.ZERO),
- throwsA(new isInstanceOf<TimeoutException>()));
- expect(completer.future, throwsCancelException);
- await flushMicrotasks();
- expect(completer.isCanceled, isTrue);
- });
-
- test("runs the user's onTimeout function when the future times out",
- () async {
- var completer = new CancelableCompleter(expectAsync(() {}));
- expect(
- completer.future.timeout(
- Duration.ZERO,
- onTimeout: expectAsync(() => 1)),
- completion(equals(1)));
- expect(completer.future, throwsCancelException);
- await flushMicrotasks();
- expect(completer.isCanceled, isTrue);
- });
- });
-}
-
-const Matcher throwsCancelException =
- const Throws(const isInstanceOf<CancelException>());
-
-Future flushMicrotasks() => new Future.delayed(Duration.ZERO);
« no previous file with comments | « pubspec.yaml ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698