| // 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. |
| |
| /// @assertion Evaluation of an await expression a of the form await e proceeds |
| /// as follows: |
| /// ... |
| /// If e raises an exception x, then an instance f of class Future is allocated |
| /// and later completed with x. Otherwise, if e evaluates to an object o that is |
| /// not an instance of Future, then let f be the result of calling |
| /// Future.value() with o as its argument; otherwise let f be the result of |
| /// evaluating e. |
| /// Next, execution of the function m immediately enclosing a is suspended |
| /// until after f completes. |
| /// @description Check that execution of the function m immediately enclosing a |
| /// is suspended until after f completes. Call sync functions to test |
| /// @author sgrekhov@unipro.ru |
| |
| |
| import 'dart:async'; |
| import '../../../Utils/expect.dart'; |
| |
| Future f1() { |
| return new Future.delayed(new Duration(milliseconds: 50)); |
| } |
| |
| Future f2() { |
| return new Future.delayed(new Duration(milliseconds: 100)); |
| } |
| |
| Future f3() { |
| return new Future.delayed(new Duration(milliseconds: 10)); |
| } |
| |
| test() async { |
| List<String> log = []; |
| await f1().then((val) { log.add("f1"); }); |
| await f2().then((val) { log.add("f2"); }); |
| await f3().then((val) { log.add("f3"); }); |
| Expect.listEquals(["f1", "f2", "f3"], log); |
| } |
| |
| main() { |
| asyncStart(); |
| test().then((value) => asyncEnd()); |
| } |