/*
 * 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 Future<T> timeout(Duration timeLimit, {dynamic onTimeout()})
 * Time-out the future computation after timeLimit has passed.
 * . . .
 * If this future does not complete before timeLimit has passed, the onTimeout
 * action is executed instead, and its result (whether it returns or throws) is
 * used as the result of the returned future. The onTimeout function must return
 * a T or a Future<T>.
 *
 * @description Checks that if future does not complete before timeLimit has
 * passed, the onTimeout action is executed instead. The onTimeout returns value
 * 56.
 * @author ngl@unipro.ru
 * @author a.semenov@unipro.ru
 */
import "dart:async";
import "../../../Utils/expect.dart";

main() {
  asyncStart();
  Completer completer = new Completer();
  completer.future.timeout(
      new Duration(microseconds:1),
      onTimeout: () => 56
  ).then(
      (value) {
        Expect.equals(56, value);
        asyncEnd();
      }
  );
}
