| /* |
| * Copyright (c) 2016, 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 If f is marked async, then a fresh instance o implementing the |
| * built-in class Future is associated with the invocation and immediately |
| * returned to the caller. The body of f is scheduled for execution at some |
| * future time. The future o will complete when f terminates. The value used |
| * to complete o is the current return value, if it is defined, and the |
| * current exception otherwise. |
| * |
| * @description Check that returned future o is completed with error thrown |
| * by the body of the executed function |
| * |
| * @author a.semenov@unipro.ru |
| */ |
| import 'dart:async'; |
| import '../../../Utils/expect.dart'; |
| |
| var executionFinishedTime = null; |
| |
| Future test1() async { |
| throw 0; |
| } |
| |
| Future<int> test2() async { |
| throw 1; |
| } |
| |
| Future test3() async { |
| throw 'abc'; |
| } |
| |
| Future test4(x) async { |
| throw x; |
| } |
| |
| Future test5(x) async { |
| try { |
| throw x; |
| } finally { |
| throw 'finally'; |
| } |
| } |
| |
| main() { |
| asyncStart(); |
| test1().then( |
| (_) => Expect.fail('test1 should throw null'), |
| onError: (e) { |
| Expect.equals(0, e); |
| }) |
| .then((_) => test2()).then( |
| (_) => Expect.fail('test2 should throw 1'), |
| onError: (e) { |
| Expect.equals(1, e); |
| } |
| ).then((_) => test3()).then( |
| (_) => Expect.fail('test3 should throw \'abc\''), |
| onError: (e) { |
| Expect.equals('abc', e); |
| } |
| ).then((_) => test4(3.14)).then( |
| (_) => Expect.fail('test4 should throw 3.14'), |
| onError: (e) { |
| Expect.equals(3.14, e); |
| } |
| ).then((_) => test5(3.14)).then( |
| (_) => Expect.fail('test5 should throw \'finally\''), |
| onError: (e) { |
| Expect.equals('finally', e); |
| asyncEnd(); |
| } |
| ); |
| } |