// 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.

// @dart = 2.9

/// @assertion final Future done
/// The done Future completes with the same values as close, except for the
/// following case:
/// The synchronous methods of EventSink were called, resulting in an error.
/// If there is no active future (like from an addStream call), the done future
/// will complete with that error
/// @description Checks that done completes with the same value as close().
/// @author ilya


import "dart:async";
import "../../../Utils/expect.dart";

main() {
  var c = new StreamController();
  var sink = c.sink;
  sink.add(1);
  sink.add(2);

  asyncStart();
  c.stream.toList().then((x) {
    Expect.listEquals([1,2], x);
    asyncEnd();
  });

  asyncStart();
  var sync = new Sync2((x,y) {
    Expect.identical(x,y);
    asyncEnd();
  });

  sink.done.then((x) {
    sync.put1(x);
  });

  sink.close().then((x) {
    sync.put2(x);
  });
}
