// 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 Stream<T> asBroadcastStream ({void onListen(StreamSubscription<T>
///   subscription), void onCancel(StreamSubscription<T> subscription)})
/// If onCancel is provided, it is called in a similar way to onListen when
/// the returned stream stops having listener. If it later gets a new listener,
/// the onListen function is called again.
/// @description Checks that onCancel callback is called when broadcast stream
/// stops having listeners because they all cancel subscription.
/// @author ilya

import "../../../Utils/expect.dart";
import "IsolateStream.dart" as IsolateStream;

main() {
  var s = IsolateStream.fromIterable([1, 2, 3]);

  asyncStart();
  var b = s.asBroadcastStream(onCancel: (subs) {
    // cancel subscription to underlying stream
    subs.cancel();
    asyncEnd();
  });

  newSubscription(stream) {
    // get one element and cancel
    var subs = stream.listen(null);
    subs.onData((_) {
      subs.cancel();
    });
  }

  newSubscription(b);
  newSubscription(b);
  newSubscription(b);
}
