Add isCanceled/Completed to CancelableOperation (#79) Closes #78
diff --git a/CHANGELOG.md b/CHANGELOG.md index c71ac91..3d543da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md
@@ -1,6 +1,7 @@ ## 2.1.0 * Fix `CancelableOperation.valueOrCancellation`'s type signature +* Add `isCanceled` and `isCompleted` to `CancelableOperation`. ## 2.0.8
diff --git a/lib/src/cancelable_operation.dart b/lib/src/cancelable_operation.dart index e6115cb..faf9076 100644 --- a/lib/src/cancelable_operation.dart +++ b/lib/src/cancelable_operation.dart
@@ -80,6 +80,12 @@ /// This returns the [Future] returned by the [CancelableCompleter]'s /// `onCancel` callback. Unlike [Stream.cancel], it never returns `null`. Future cancel() => _completer._cancel(); + + /// Whether this operation has been canceled before it completed. + bool get isCanceled => _completer.isCanceled; + + /// Whether this operation completed before being canceled. + bool get isCompleted => _completer.isCompleted; } /// A completer for a [CancelableOperation].
diff --git a/test/cancelable_operation_test.dart b/test/cancelable_operation_test.dart index 4a23856..384a023 100644 --- a/test/cancelable_operation_test.dart +++ b/test/cancelable_operation_test.dart
@@ -40,8 +40,10 @@ test("sends errors in a future to the future", () { expect(completer.operation.value, throwsA("error")); expect(completer.isCompleted, isFalse); + expect(completer.operation.isCompleted, isFalse); completer.complete(Future.error("error")); expect(completer.isCompleted, isTrue); + expect(completer.operation.isCompleted, isTrue); }); test("sends values to valueOrCancellation", () { @@ -122,11 +124,15 @@ expect(canceled, isFalse); expect(completer.isCanceled, isFalse); + expect(completer.operation.isCanceled, isFalse); expect(completer.isCompleted, isFalse); + expect(completer.operation.isCompleted, isFalse); completer.operation.cancel(); expect(canceled, isTrue); expect(completer.isCanceled, isTrue); + expect(completer.operation.isCanceled, isTrue); expect(completer.isCompleted, isFalse); + expect(completer.operation.isCompleted, isFalse); }); test("returns the onCancel future each time cancel is called", () {