// Copyright (c) 2011, 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 then(dynamic onValue(T value), {Function onError})
 *    Register callbacks to be called when this future completes.
 *    When this future completes with a value, the onValue callback will be
 * called with that value. If this future is already completed, the callback
 * will not be called immediately, but will be scheduled in a later microtask.
 * . . .
 *    Returns a new Future which is completed with the result of the call to
 * onValue (if this future completes with a value) or to onError (if this
 * future completes with an error).
 * @description Checks that different onValue functions don't conflict with
 * each other.
 * @author msyabro
 */
import "dart:async";
import "../../../Utils/expect.dart";

main() {
  Completer completer = new Completer();
  Future f = completer.future;

  asyncStart();
  f.then((fValue) {
    Expect.equals(0, fValue);
    asyncEnd();
  });

  asyncStart();
  f.then((fValue) {
    Expect.equals(0, fValue);
    asyncEnd();
  });

  asyncStart();
  f.then((fValue) {
    Expect.equals(0, fValue);
    asyncEnd();
  });

  completer.complete(0);
}
