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

Unified Diff: pkg/unittest/lib/src/spread_args_helper.dart

Issue 193643003: pkg/unittest: support up to 6 arguments in expectAsync[Until] (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: rebase Created 6 years, 9 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: pkg/unittest/lib/src/spread_args_helper.dart
diff --git a/pkg/unittest/lib/src/spread_args_helper.dart b/pkg/unittest/lib/src/spread_args_helper.dart
index 41411b93780f4f2d68f4f6941dad6186b668f4f4..5adf21f16e89633799bb356ac5cc5e9bd094868c 100644
--- a/pkg/unittest/lib/src/spread_args_helper.dart
+++ b/pkg/unittest/lib/src/spread_args_helper.dart
@@ -1,5 +1,11 @@
part of unittest;
+const _PLACE_HOLDER = const _ArgPlaceHolder();
+
+class _ArgPlaceHolder {
+ const _ArgPlaceHolder();
+}
+
/** Simulates spread arguments using named arguments. */
// TODO(sigmund): remove this class and simply use a closure with named
// arguments (if still applicable).
@@ -14,7 +20,7 @@ class _SpreadArgsHelper {
bool complete;
_SpreadArgsHelper(Function callback, int minExpected, int maxExpected,
- Function isDone, String id)
+ String id, {bool isDone()})
: this.callback = callback,
minExpectedCalls = minExpected,
maxExpectedCalls = (maxExpected == 0 && minExpected > 0)
@@ -90,31 +96,44 @@ class _SpreadArgsHelper {
}
}
- invoke0() {
- return _guardAsync(
- () {
- if (shouldCallBack()) {
- return callback();
- }
- },
- after, testCase);
- }
+ //TODO(kevmoo) DOCUMENT!
kevmoo 2014/03/11 03:46:47 I'm going to document this quick before I commit
+ Function get func {
+ if (callback is _Func6) return _max6;
+ if (callback is _Func5) return _max5;
+ if (callback is _Func4) return _max4;
+ if (callback is _Func3) return _max3;
+ if (callback is _Func2) return _max2;
+ if (callback is _Func1) return _max1;
+ if (callback is _Func0) return _max0;
- invoke1(arg1) {
- return _guardAsync(
- () {
- if (shouldCallBack()) {
- return callback(arg1);
- }
- },
- after, testCase);
+ throw new ArgumentError(
+ 'The callback argument has more than 6 required arguments');
}
- invoke2(arg1, arg2) {
+ _max0() => _max6();
+
+ _max1([a0 = _PLACE_HOLDER]) => _max6(a0);
+
+ _max2([a0 = _PLACE_HOLDER, a1 = _PLACE_HOLDER]) => _max6(a0, a1);
+
+ _max3([a0 = _PLACE_HOLDER, a1 = _PLACE_HOLDER, a2 = _PLACE_HOLDER]) =>
+ _max6(a0, a1, a2);
+
+ _max4([a0 = _PLACE_HOLDER, a1 = _PLACE_HOLDER, a2 = _PLACE_HOLDER,
+ a3 = _PLACE_HOLDER]) => _max6(a0, a1, a2, a3);
+
+ _max5([a0 = _PLACE_HOLDER, a1 = _PLACE_HOLDER, a2 = _PLACE_HOLDER,
+ a3 = _PLACE_HOLDER, a4 = _PLACE_HOLDER]) => _max6(a0, a1, a2, a3, a4);
+
+ _max6([a0 = _PLACE_HOLDER, a1 = _PLACE_HOLDER, a2 = _PLACE_HOLDER,
+ a3 = _PLACE_HOLDER, a4 = _PLACE_HOLDER, a5 = _PLACE_HOLDER]) {
+ var args = [a0, a1, a2, a3, a4, a5];
+ args.removeWhere((a) => a == _PLACE_HOLDER);
+
return _guardAsync(
() {
if (shouldCallBack()) {
- return callback(arg1, arg2);
+ return Function.apply(callback, args);
}
},
after, testCase);
@@ -131,3 +150,11 @@ class _SpreadArgsHelper {
}
}
}
+
+typedef _Func0();
+typedef _Func1(a);
+typedef _Func2(a, b);
+typedef _Func3(a, b, c);
+typedef _Func4(a, b, c, d);
+typedef _Func5(a, b, c, d, e);
+typedef _Func6(a, b, c, d, e, f);

Powered by Google App Engine
This is Rietveld 408576698