| 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 import 'dart:async'; | 5 import 'dart:async'; |
| 6 | 6 |
| 7 import '../backend/invoker.dart'; | 7 import '../backend/invoker.dart'; |
| 8 import '../backend/state.dart'; | |
| 9 import 'expect.dart'; | 8 import 'expect.dart'; |
| 10 | 9 |
| 11 /// An object used to detect unpassed arguments. | 10 /// An object used to detect unpassed arguments. |
| 12 const _PLACEHOLDER = const Object(); | 11 const _PLACEHOLDER = const Object(); |
| 13 | 12 |
| 14 // Functions used to check how many arguments a callback takes. | 13 // Functions used to check how many arguments a callback takes. |
| 15 typedef _Func0(); | 14 typedef _Func0(); |
| 16 typedef _Func1(a); | 15 typedef _Func1(a); |
| 17 typedef _Func2(a, b); | 16 typedef _Func2(a, b); |
| 18 typedef _Func3(a, b, c); | 17 typedef _Func3(a, b, c); |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 a3 = _PLACEHOLDER, a4 = _PLACEHOLDER, a5 = _PLACEHOLDER]) => | 162 a3 = _PLACEHOLDER, a4 = _PLACEHOLDER, a5 = _PLACEHOLDER]) => |
| 164 _run([a0, a1, a2, a3, a4, a5].where((a) => a != _PLACEHOLDER)); | 163 _run([a0, a1, a2, a3, a4, a5].where((a) => a != _PLACEHOLDER)); |
| 165 | 164 |
| 166 /// Runs the wrapped function with [args] and returns its return value. | 165 /// Runs the wrapped function with [args] and returns its return value. |
| 167 _run(Iterable args) { | 166 _run(Iterable args) { |
| 168 // Note that in the old test, this returned `null` if it encountered an | 167 // Note that in the old test, this returned `null` if it encountered an |
| 169 // error, where now it just re-throws that error because Zone machinery will | 168 // error, where now it just re-throws that error because Zone machinery will |
| 170 // pass it to the invoker anyway. | 169 // pass it to the invoker anyway. |
| 171 try { | 170 try { |
| 172 _actualCalls++; | 171 _actualCalls++; |
| 173 if (_invoker.liveTest.isComplete && | 172 if (_invoker.liveTest.state.shouldBeDone) { |
| 174 _invoker.liveTest.state.result == Result.success) { | |
| 175 throw 'Callback ${_id}called ($_actualCalls) after test case ' | 173 throw 'Callback ${_id}called ($_actualCalls) after test case ' |
| 176 '${_invoker.liveTest.test.name} had already completed.$_reason'; | 174 '${_invoker.liveTest.test.name} had already completed.$_reason'; |
| 177 } else if (_maxExpectedCalls >= 0 && _actualCalls > _maxExpectedCalls) { | 175 } else if (_maxExpectedCalls >= 0 && _actualCalls > _maxExpectedCalls) { |
| 178 throw new TestFailure('Callback ${_id}called more times than expected ' | 176 throw new TestFailure('Callback ${_id}called more times than expected ' |
| 179 '($_maxExpectedCalls).$_reason'); | 177 '($_maxExpectedCalls).$_reason'); |
| 180 } | 178 } |
| 181 | 179 |
| 182 return Function.apply(_callback, args.toList()); | 180 return Function.apply(_callback, args.toList()); |
| 183 } catch (error, stackTrace) { | 181 } catch (error, stackTrace) { |
| 184 _zone.handleUncaughtError(error, stackTrace); | 182 _zone.handleUncaughtError(error, stackTrace); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 Function expectAsyncUntil(Function callback, bool isDone(), | 239 Function expectAsyncUntil(Function callback, bool isDone(), |
| 242 {String id, String reason}) { | 240 {String id, String reason}) { |
| 243 if (Invoker.current == null) { | 241 if (Invoker.current == null) { |
| 244 throw new StateError( | 242 throw new StateError( |
| 245 "expectAsyncUntil() may only be called within a test."); | 243 "expectAsyncUntil() may only be called within a test."); |
| 246 } | 244 } |
| 247 | 245 |
| 248 return new _ExpectedFunction(callback, 0, -1, | 246 return new _ExpectedFunction(callback, 0, -1, |
| 249 id: id, reason: reason, isDone: isDone).func; | 247 id: id, reason: reason, isDone: isDone).func; |
| 250 } | 248 } |
| OLD | NEW |