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 |
deleted file mode 100644 |
index 554dcf64c458d7111313299959d8c1af3f20a99d..0000000000000000000000000000000000000000 |
--- a/pkg/unittest/lib/src/spread_args_helper.dart |
+++ /dev/null |
@@ -1,166 +0,0 @@ |
-part of unittest; |
- |
-const _PLACE_HOLDER = const _ArgPlaceHolder(); |
- |
-/// Used to track unused positional args. |
-class _ArgPlaceHolder { |
- const _ArgPlaceHolder(); |
-} |
- |
-/// Simulates spread arguments using named arguments. |
-class _SpreadArgsHelper { |
- final Function callback; |
- final int minExpectedCalls; |
- final int maxExpectedCalls; |
- final Function isDone; |
- final String id; |
- final String reason; |
- int actualCalls = 0; |
- final TestCase testCase; |
- bool complete; |
- |
- _SpreadArgsHelper(Function callback, int minExpected, int maxExpected, |
- String id, String reason, {bool isDone()}) |
- : this.callback = callback, |
- minExpectedCalls = minExpected, |
- maxExpectedCalls = (maxExpected == 0 && minExpected > 0) |
- ? minExpected |
- : maxExpected, |
- this.isDone = isDone, |
- this.reason = reason == null ? '' : '\n$reason', |
- this.testCase = currentTestCase, |
- this.id = _makeCallbackId(id, callback) { |
- ensureInitialized(); |
- if (testCase == null) { |
- throw new StateError("No valid test. Did you forget to run your test " |
- "inside a call to test()?"); |
- } |
- |
- if (isDone != null || minExpected > 0) { |
- testCase._callbackFunctionsOutstanding++; |
- complete = false; |
- } else { |
- complete = true; |
- } |
- } |
- |
- static String _makeCallbackId(String id, Function callback) { |
- // Try to create a reasonable id. |
- if (id != null) { |
- return "$id "; |
- } else { |
- // If the callback is not an anonymous closure, try to get the |
- // name. |
- var fname = callback.toString(); |
- var prefix = "Function '"; |
- var pos = fname.indexOf(prefix); |
- if (pos > 0) { |
- pos += prefix.length; |
- var epos = fname.indexOf("'", pos); |
- if (epos > 0) { |
- return "${fname.substring(pos, epos)} "; |
- } |
- } |
- } |
- return ''; |
- } |
- |
- bool shouldCallBack() { |
- ++actualCalls; |
- if (testCase.isComplete) { |
- // Don't run if the test is done. We don't throw here as this is not |
- // the current test, but we do mark the old test as having an error |
- // if it previously passed. |
- if (testCase.result == PASS) { |
- testCase._error( |
- 'Callback ${id}called ($actualCalls) after test case ' |
- '${testCase.description} has already been marked as ' |
- '${testCase.result}.$reason'); |
- } |
- return false; |
- } else if (maxExpectedCalls >= 0 && actualCalls > maxExpectedCalls) { |
- throw new TestFailure('Callback ${id}called more times than expected ' |
- '($maxExpectedCalls).$reason'); |
- } |
- return true; |
- } |
- |
- void after() { |
- if (!complete) { |
- if (minExpectedCalls > 0 && actualCalls < minExpectedCalls) return; |
- if (isDone != null && !isDone()) return; |
- |
- // Mark this callback as complete and remove it from the testcase |
- // oustanding callback count; if that hits zero the testcase is done. |
- complete = true; |
- testCase._markCallbackComplete(); |
- } |
- } |
- |
- /// Returns a function that has as many required + positional arguments as |
- /// [callback] (up to a total of 6). |
- /// |
- /// Optional positional arguments are supported by using const place-holders |
- 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; |
- |
- throw new ArgumentError( |
- 'The callback argument has more than 6 required arguments'); |
- } |
- |
- /// This indirection is critical. It ensures the returned function has an |
- /// argument count of zero. |
- _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 Function.apply(callback, args); |
- } |
- }, |
- after, testCase); |
- } |
- |
- _guardAsync(Function tryBody, Function finallyBody, TestCase testCase) { |
- assert(testCase != null); |
- try { |
- return tryBody(); |
- } catch (e, trace) { |
- _registerException(testCase, e, trace); |
- } finally { |
- if (finallyBody != null) finallyBody(); |
- } |
- } |
-} |
- |
-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); |