blob: f9f09077fd60f1259a14bf8c9254cefba0fa40f5 [file] [log] [blame]
// 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();
}