| // 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); |
| } |