// 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 factory StreamController.broadcast({void onListen(),
/// void onCancel(), bool sync: false})
/// It is not allowed to call add, addError, or close before a previous call has
/// returned.
/// @description Checks that it is not allowed to call add, addError or close
/// before a previous call has returned.
/// @needsreview Will only work if events for sync:true are indeed delivered
/// synchronously. The doc states that they _may be_ passed directly.
/// @author ilya

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

main() {
  var c = new StreamController.broadcast(sync: true);

  c.stream.listen((_) {
    Expect.throws(() => c.add(2));
    Expect.throws(() => c.addError(2));
    Expect.throws(() => c.close());
  }, onError: (_) {
    Expect.throws(() => c.add(2));
    Expect.throws(() => c.addError(2));
    Expect.throws(() => c.close());
  }, onDone: () {
    c.close();
  });

  c.add(1);
  c.addError(1);
  c.close();
}
