| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library unittest.frontend.expect_async; | 5 library test.frontend.expect_async; |
| 6 | 6 |
| 7 import '../backend/invoker.dart'; | 7 import '../backend/invoker.dart'; |
| 8 import '../backend/state.dart'; | 8 import '../backend/state.dart'; |
| 9 import 'expect.dart'; | 9 import 'expect.dart'; |
| 10 | 10 |
| 11 /// An object used to detect unpassed arguments. | 11 /// An object used to detect unpassed arguments. |
| 12 const _PLACEHOLDER = const Object(); | 12 const _PLACEHOLDER = const Object(); |
| 13 | 13 |
| 14 // Functions used to check how many arguments a callback takes. | 14 // Functions used to check how many arguments a callback takes. |
| 15 typedef _Func0(); | 15 typedef _Func0(); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 155 | 155 |
| 156 _max5([a0 = _PLACEHOLDER, a1 = _PLACEHOLDER, a2 = _PLACEHOLDER, | 156 _max5([a0 = _PLACEHOLDER, a1 = _PLACEHOLDER, a2 = _PLACEHOLDER, |
| 157 a3 = _PLACEHOLDER, a4 = _PLACEHOLDER]) => _max6(a0, a1, a2, a3, a4); | 157 a3 = _PLACEHOLDER, a4 = _PLACEHOLDER]) => _max6(a0, a1, a2, a3, a4); |
| 158 | 158 |
| 159 _max6([a0 = _PLACEHOLDER, a1 = _PLACEHOLDER, a2 = _PLACEHOLDER, | 159 _max6([a0 = _PLACEHOLDER, a1 = _PLACEHOLDER, a2 = _PLACEHOLDER, |
| 160 a3 = _PLACEHOLDER, a4 = _PLACEHOLDER, a5 = _PLACEHOLDER]) => | 160 a3 = _PLACEHOLDER, a4 = _PLACEHOLDER, a5 = _PLACEHOLDER]) => |
| 161 _run([a0, a1, a2, a3, a4, a5].where((a) => a != _PLACEHOLDER)); | 161 _run([a0, a1, a2, a3, a4, a5].where((a) => a != _PLACEHOLDER)); |
| 162 | 162 |
| 163 /// Runs the wrapped function with [args] and returns its return value. | 163 /// Runs the wrapped function with [args] and returns its return value. |
| 164 _run(Iterable args) { | 164 _run(Iterable args) { |
| 165 // Note that in the old unittest, this returned `null` if it encountered an | 165 // Note that in the old test, this returned `null` if it encountered an |
| 166 // error, where now it just re-throws that error because Zone machinery will | 166 // error, where now it just re-throws that error because Zone machinery will |
| 167 // pass it to the invoker anyway. | 167 // pass it to the invoker anyway. |
| 168 try { | 168 try { |
| 169 _actualCalls++; | 169 _actualCalls++; |
| 170 if (_invoker.liveTest.isComplete && | 170 if (_invoker.liveTest.isComplete && |
| 171 _invoker.liveTest.state.result == Result.success) { | 171 _invoker.liveTest.state.result == Result.success) { |
| 172 throw 'Callback ${_id}called ($_actualCalls) after test case ' | 172 throw 'Callback ${_id}called ($_actualCalls) after test case ' |
| 173 '${_invoker.liveTest.test.name} had already completed.$_reason'; | 173 '${_invoker.liveTest.test.name} had already completed.$_reason'; |
| 174 } else if (_maxExpectedCalls >= 0 && _actualCalls > _maxExpectedCalls) { | 174 } else if (_maxExpectedCalls >= 0 && _actualCalls > _maxExpectedCalls) { |
| 175 throw new TestFailure('Callback ${_id}called more times than expected ' | 175 throw new TestFailure('Callback ${_id}called more times than expected ' |
| (...skipping 18 matching lines...) Expand all Loading... |
| 194 // Mark this callback as complete and remove it from the test case's | 194 // Mark this callback as complete and remove it from the test case's |
| 195 // oustanding callback count; if that hits zero the test is done. | 195 // oustanding callback count; if that hits zero the test is done. |
| 196 _complete = true; | 196 _complete = true; |
| 197 _invoker.removeOutstandingCallback(); | 197 _invoker.removeOutstandingCallback(); |
| 198 } | 198 } |
| 199 } | 199 } |
| 200 | 200 |
| 201 /// Indicate that [callback] is expected to be called [count] number of times | 201 /// Indicate that [callback] is expected to be called [count] number of times |
| 202 /// (by default 1). | 202 /// (by default 1). |
| 203 /// | 203 /// |
| 204 /// The unittest framework will wait for the callback to run the [count] times | 204 /// The test framework will wait for the callback to run the [count] times |
| 205 /// before it considers the current test to be complete. [callback] may take up | 205 /// before it considers the current test to be complete. [callback] may take up |
| 206 /// to six optional or required positional arguments; named arguments are not | 206 /// to six optional or required positional arguments; named arguments are not |
| 207 /// supported. | 207 /// supported. |
| 208 /// | 208 /// |
| 209 /// [max] can be used to specify an upper bound on the number of calls; if this | 209 /// [max] can be used to specify an upper bound on the number of calls; if this |
| 210 /// is exceeded the test will fail. If [max] is `0` (the default), the callback | 210 /// is exceeded the test will fail. If [max] is `0` (the default), the callback |
| 211 /// is expected to be called exactly [count] times. If [max] is `-1`, the | 211 /// is expected to be called exactly [count] times. If [max] is `-1`, the |
| 212 /// callback is allowed to be called any number of times greater than [count]. | 212 /// callback is allowed to be called any number of times greater than [count]. |
| 213 /// | 213 /// |
| 214 /// Both [id] and [reason] are optional and provide extra information about the | 214 /// Both [id] and [reason] are optional and provide extra information about the |
| (...skipping 10 matching lines...) Expand all Loading... |
| 225 /// true will the callback be considered complete. [callback] may take up to six | 225 /// true will the callback be considered complete. [callback] may take up to six |
| 226 /// optional or required positional arguments; named arguments are not | 226 /// optional or required positional arguments; named arguments are not |
| 227 /// supported. | 227 /// supported. |
| 228 /// | 228 /// |
| 229 /// Both [id] and [reason] are optional and provide extra information about the | 229 /// Both [id] and [reason] are optional and provide extra information about the |
| 230 /// callback when debugging. [id] should be the name of the callback, while | 230 /// callback when debugging. [id] should be the name of the callback, while |
| 231 /// [reason] should be the reason the callback is expected to be called. | 231 /// [reason] should be the reason the callback is expected to be called. |
| 232 Function expectAsyncUntil(Function callback, bool isDone(), | 232 Function expectAsyncUntil(Function callback, bool isDone(), |
| 233 {String id, String reason}) => new _ExpectedFunction(callback, 0, -1, | 233 {String id, String reason}) => new _ExpectedFunction(callback, 0, -1, |
| 234 id: id, reason: reason, isDone: isDone).func; | 234 id: id, reason: reason, isDone: isDone).func; |
| OLD | NEW |