| Index: test/result_future_test.dart
 | 
| diff --git a/test/result_future_test.dart b/test/result_future_test.dart
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..d8b4e01e2778357c0a36b1d1cdd42749a73dafa5
 | 
| --- /dev/null
 | 
| +++ b/test/result_future_test.dart
 | 
| @@ -0,0 +1,44 @@
 | 
| +// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
 | 
| +// for details. All rights reserved. Use of this source code is governed by a
 | 
| +// BSD-style license that can be found in the LICENSE file.
 | 
| +
 | 
| +import 'dart:async';
 | 
| +
 | 
| +import 'package:async/async.dart';
 | 
| +import 'package:stack_trace/stack_trace.dart';
 | 
| +import 'package:test/test.dart';
 | 
| +
 | 
| +void main() {
 | 
| +  var completer;
 | 
| +  var future;
 | 
| +  setUp(() {
 | 
| +    completer = new Completer();
 | 
| +    future = new ResultFuture(completer.future);
 | 
| +  });
 | 
| +
 | 
| +  test('before completion, result is null', () {
 | 
| +    expect(future.result, isNull);
 | 
| +  });
 | 
| +
 | 
| +  test('after successful completion, result is the value of the future', () {
 | 
| +    completer.complete(12);
 | 
| +
 | 
| +    // The completer calls its listeners asynchronously. We have to wait
 | 
| +    // before we can access the result.
 | 
| +    expect(future.then((_) => future.result.asValue.value),
 | 
| +        completion(equals(12)));
 | 
| +  });
 | 
| +
 | 
| +  test("after an error completion, result is the future's error", () {
 | 
| +    var trace = new Trace.current();
 | 
| +    completer.completeError('error', trace);
 | 
| +
 | 
| +    // The completer calls its listeners asynchronously. We have to wait
 | 
| +    // before we can access the result.
 | 
| +    return future.catchError((_) {}).then((_) {
 | 
| +      var error = future.result.asError;
 | 
| +      expect(error.error, equals('error'));
 | 
| +      expect(error.stackTrace, equals(trace));
 | 
| +    });
 | 
| +  });
 | 
| +}
 | 
| 
 |