Index: tests/lib_strong/async/future_constructor_test.dart |
diff --git a/tests/lib_strong/async/future_constructor_test.dart b/tests/lib_strong/async/future_constructor_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..55193d96c3661a6c72a3db244536e1dfe10f0560 |
--- /dev/null |
+++ b/tests/lib_strong/async/future_constructor_test.dart |
@@ -0,0 +1,37 @@ |
+// 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); |
+} |
+ |