OLD | NEW |
1 part of unittest; | 1 part of unittest; |
2 | 2 |
3 const _PLACE_HOLDER = const _ArgPlaceHolder(); | |
4 | |
5 class _ArgPlaceHolder { | |
6 const _ArgPlaceHolder(); | |
7 } | |
8 | |
9 /** Simulates spread arguments using named arguments. */ | 3 /** Simulates spread arguments using named arguments. */ |
10 // TODO(sigmund): remove this class and simply use a closure with named | 4 // TODO(sigmund): remove this class and simply use a closure with named |
11 // arguments (if still applicable). | 5 // arguments (if still applicable). |
12 class _SpreadArgsHelper implements Function { | 6 class _SpreadArgsHelper { |
13 final Function callback; | 7 final Function callback; |
14 final int minExpectedCalls; | 8 final int minExpectedCalls; |
15 final int maxExpectedCalls; | 9 final int maxExpectedCalls; |
16 final Function isDone; | 10 final Function isDone; |
17 final String id; | 11 final String id; |
18 int actualCalls = 0; | 12 int actualCalls = 0; |
19 final TestCase testCase; | 13 final TestCase testCase; |
20 bool complete; | 14 bool complete; |
21 | 15 |
22 _SpreadArgsHelper(Function callback, int minExpected, int maxExpected, | 16 _SpreadArgsHelper(Function callback, int minExpected, int maxExpected, |
23 String id, {bool isDone()}) | 17 Function isDone, String id) |
24 : this.callback = callback, | 18 : this.callback = callback, |
25 minExpectedCalls = minExpected, | 19 minExpectedCalls = minExpected, |
26 maxExpectedCalls = (maxExpected == 0 && minExpected > 0) | 20 maxExpectedCalls = (maxExpected == 0 && minExpected > 0) |
27 ? minExpected | 21 ? minExpected |
28 : maxExpected, | 22 : maxExpected, |
29 this.isDone = isDone, | 23 this.isDone = isDone, |
30 this.testCase = currentTestCase, | 24 this.testCase = currentTestCase, |
31 this.id = _makeCallbackId(id, callback) { | 25 this.id = _makeCallbackId(id, callback) { |
32 ensureInitialized(); | 26 ensureInitialized(); |
33 if (testCase == null) { | 27 if (testCase == null) { |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 if (minExpectedCalls > 0 && actualCalls < minExpectedCalls) return; | 83 if (minExpectedCalls > 0 && actualCalls < minExpectedCalls) return; |
90 if (isDone != null && !isDone()) return; | 84 if (isDone != null && !isDone()) return; |
91 | 85 |
92 // Mark this callback as complete and remove it from the testcase | 86 // Mark this callback as complete and remove it from the testcase |
93 // oustanding callback count; if that hits zero the testcase is done. | 87 // oustanding callback count; if that hits zero the testcase is done. |
94 complete = true; | 88 complete = true; |
95 testCase._markCallbackComplete(); | 89 testCase._markCallbackComplete(); |
96 } | 90 } |
97 } | 91 } |
98 | 92 |
99 call([a0 = _PLACE_HOLDER, a1 = _PLACE_HOLDER, a2 = _PLACE_HOLDER, | 93 invoke0() { |
100 a3 = _PLACE_HOLDER, a4 = _PLACE_HOLDER, a5 = _PLACE_HOLDER]) { | |
101 | |
102 var args = [a0, a1, a2, a3, a4, a5]; | |
103 args.removeWhere((a) => a == _PLACE_HOLDER); | |
104 | |
105 return _guardAsync( | 94 return _guardAsync( |
106 () { | 95 () { |
107 if (shouldCallBack()) { | 96 if (shouldCallBack()) { |
108 return Function.apply(callback, args); | 97 return callback(); |
109 } | 98 } |
110 }, | 99 }, |
111 after, testCase); | 100 after, testCase); |
| 101 } |
| 102 |
| 103 invoke1(arg1) { |
| 104 return _guardAsync( |
| 105 () { |
| 106 if (shouldCallBack()) { |
| 107 return callback(arg1); |
| 108 } |
| 109 }, |
| 110 after, testCase); |
| 111 } |
| 112 |
| 113 invoke2(arg1, arg2) { |
| 114 return _guardAsync( |
| 115 () { |
| 116 if (shouldCallBack()) { |
| 117 return callback(arg1, arg2); |
| 118 } |
| 119 }, |
| 120 after, testCase); |
112 } | 121 } |
113 | 122 |
114 _guardAsync(Function tryBody, Function finallyBody, TestCase testCase) { | 123 _guardAsync(Function tryBody, Function finallyBody, TestCase testCase) { |
115 assert(testCase != null); | 124 assert(testCase != null); |
116 try { | 125 try { |
117 return tryBody(); | 126 return tryBody(); |
118 } catch (e, trace) { | 127 } catch (e, trace) { |
119 _registerException(testCase, e, trace); | 128 _registerException(testCase, e, trace); |
120 } finally { | 129 } finally { |
121 if (finallyBody != null) finallyBody(); | 130 if (finallyBody != null) finallyBody(); |
122 } | 131 } |
123 } | 132 } |
124 } | 133 } |
OLD | NEW |