| // Copyright (c) 2012, 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. | |
| library future_test; | |
| import "package:expect/expect.dart"; | |
| import 'dart:async'; | |
| main() { | |
| compare(func) { | |
| // Compare the results of the following two futures. | |
| Future f1 = new Future(func); | |
| Future f2 = new Future.value().then((_) => func()); | |
| f2.catchError((_) {}); // I'll get the error later. | |
| f1.then( | |
| (v1) { | |
| f2.then((v2) { | |
| Expect.equals(v1, v2); | |
| }); | |
| }, | |
| onError: (e1) { | |
| f2.then( | |
| (_) { | |
| Expect.fail("Expected error"); | |
| }, | |
| onError: (e2) { | |
| Expect.equals(e1, e2); | |
| }, | |
| ); | |
| }, | |
| ); | |
| } | |
| Future val = new Future.value(42); | |
| Future err1 = new Future.error("Error")..catchError((_) {}); | |
| compare(() => 42); | |
| compare(() => val); | |
| compare(() { | |
| throw "Flif"; | |
| }); | |
| compare(() => err1); | |
| bool hasExecuted = false; | |
| compare(() { | |
| hasExecuted = true; | |
| return 499; | |
| }); | |
| Expect.isFalse(hasExecuted); | |
| } |