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 |