| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 import 'dart:async'; | |
| 6 | |
| 7 import 'package:async/async.dart'; | |
| 8 import 'package:stack_trace/stack_trace.dart'; | |
| 9 import 'package:test/test.dart'; | |
| 10 | |
| 11 void main() { | |
| 12 var completer; | |
| 13 var future; | |
| 14 setUp(() { | |
| 15 completer = new Completer(); | |
| 16 future = new ResultFuture(completer.future); | |
| 17 }); | |
| 18 | |
| 19 test('before completion, result is null', () { | |
| 20 expect(future.result, isNull); | |
| 21 }); | |
| 22 | |
| 23 test('after successful completion, result is the value of the future', () { | |
| 24 completer.complete(12); | |
| 25 | |
| 26 // The completer calls its listeners asynchronously. We have to wait | |
| 27 // before we can access the result. | |
| 28 expect(future.then((_) => future.result.asValue.value), | |
| 29 completion(equals(12))); | |
| 30 }); | |
| 31 | |
| 32 test("after an error completion, result is the future's error", () { | |
| 33 var trace = new Trace.current(); | |
| 34 completer.completeError('error', trace); | |
| 35 | |
| 36 // The completer calls its listeners asynchronously. We have to wait | |
| 37 // before we can access the result. | |
| 38 return future.catchError((_) {}).then((_) { | |
| 39 var error = future.result.asError; | |
| 40 expect(error.error, equals('error')); | |
| 41 expect(error.stackTrace, equals(trace)); | |
| 42 }); | |
| 43 }); | |
| 44 } | |
| OLD | NEW |