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

Unified Diff: lib/src/backend/outstanding_callback_counter.dart

Issue 1116443002: Support future matchers and expectAsync in tearDowns. (Closed) Base URL: git@github.com:dart-lang/unittest.git@master
Patch Set: Created 5 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
« no previous file with comments | « lib/src/backend/invoker.dart ('k') | lib/src/utils.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/src/backend/outstanding_callback_counter.dart
diff --git a/lib/src/backend/outstanding_callback_counter.dart b/lib/src/backend/outstanding_callback_counter.dart
new file mode 100644
index 0000000000000000000000000000000000000000..ba4ba42c783b88b1968ad96b0a957defeca574d3
--- /dev/null
+++ b/lib/src/backend/outstanding_callback_counter.dart
@@ -0,0 +1,42 @@
+// 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.
+
+library test.backend.outstanding_callback_counter;
+
+import 'dart:async';
+
+/// A class that counts outstanding callbacks for a test and fires a future once
+/// they reach zero.
+///
+/// The outstanding callback count automatically starts at 1.
+class OutstandingCallbackCounter {
+ /// The number of outstanding callbacks.
+ var _count = 1;
kevmoo 2015/04/28 18:44:49 int!
nweiz 2015/04/28 18:56:18 It's private and its type is obvious from its init
+
+ /// A future that fires when the oustanding callback count reaches 0.
+ Future get noOutstandingCallbacks => _completer.future;
+ final _completer = new Completer();
+
+ /// Adds an outstanding callback.
+ void addOutstandingCallback() {
+ _count++;
+ }
+
+ /// Removes an outstanding callback.
+ void removeOutstandingCallback() {
+ _count--;
+ if (_count != 0) return;
+ if (_completer.isCompleted) return;
+ _completer.complete();
+ }
+
+ /// Removes all outstanding callbacks, forcing [noOutstandingCallbacks] to
+ /// fire.
+ ///
+ /// Future calls to [addOutstandingCallback] and [removeOutstandingCallback]
+ /// will be ignored.
+ void removeAllOutstandingCallbacks() {
+ if (!_completer.isCompleted) _completer.complete();
+ }
+}
« no previous file with comments | « lib/src/backend/invoker.dart ('k') | lib/src/utils.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698