blob: 0631310cdec0871cf82caff9fccf0093e77ef0a9 [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();
}