OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 // TODO(nweiz): Add support for calling [schedule] while the schedule is already | 5 // TODO(nweiz): Add support for calling [schedule] while the schedule is already |
6 // running. | 6 // running. |
7 // TODO(nweiz): Port the non-Pub-specific scheduled test libraries from Pub. | 7 // TODO(nweiz): Port the non-Pub-specific scheduled test libraries from Pub. |
8 /// A package for writing readable tests of asynchronous behavior. | 8 /// A package for writing readable tests of asynchronous behavior. |
9 /// | 9 /// |
10 /// This package works by building up a queue of asynchronous tasks called a | 10 /// This package works by building up a queue of asynchronous tasks called a |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 | 309 |
310 unittest.tearDown(() { | 310 unittest.tearDown(() { |
311 _currentSchedule = null; | 311 _currentSchedule = null; |
312 }); | 312 }); |
313 } | 313 } |
314 | 314 |
315 /// Ensures that the global configuration for `scheduled_test` has been | 315 /// Ensures that the global configuration for `scheduled_test` has been |
316 /// initialized. | 316 /// initialized. |
317 void _ensureInitialized() { | 317 void _ensureInitialized() { |
318 unittest.ensureInitialized(); | 318 unittest.ensureInitialized(); |
319 unittest.wrapAsync = (f) { | 319 unittest.wrapAsync = (f, [id = '']) { |
320 if (currentSchedule == null) { | 320 if (currentSchedule == null) { |
321 throw new StateError("Unexpected call to wrapAsync with no current " | 321 throw new StateError("Unexpected call to wrapAsync with no current " |
322 "schedule."); | 322 "schedule."); |
323 } | 323 } |
324 | 324 |
325 return currentSchedule.wrapAsync(f); | 325 return currentSchedule.wrapAsync(f); |
326 }; | 326 }; |
327 } | 327 } |
328 | 328 |
329 /// Like [wrapAsync], this ensures that the current task queue waits for | 329 /// Like [wrapAsync], this ensures that the current task queue waits for |
330 /// out-of-band asynchronous code, and that errors raised in that code are | 330 /// out-of-band asynchronous code, and that errors raised in that code are |
331 /// handled correctly. However, [wrapFuture] wraps a [Future] chain rather than | 331 /// handled correctly. However, [wrapFuture] wraps a [Future] chain rather than |
332 /// a single callback. | 332 /// a single callback. |
333 /// | 333 /// |
334 /// The returned [Future] completes to the same value or error as [future]. | 334 /// The returned [Future] completes to the same value or error as [future]. |
335 Future wrapFuture(Future future) { | 335 Future wrapFuture(Future future) { |
336 if (currentSchedule == null) { | 336 if (currentSchedule == null) { |
337 throw new StateError("Unexpected call to wrapFuture with no current " | 337 throw new StateError("Unexpected call to wrapFuture with no current " |
338 "schedule."); | 338 "schedule."); |
339 } | 339 } |
340 | 340 |
341 return currentSchedule.wrapFuture(future); | 341 return currentSchedule.wrapFuture(future); |
342 } | 342 } |
OLD | NEW |