// 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 StreamController({void onListen(), void onPause(),
///                  void onResume(), dynamic onCancel(), bool sync: false})
/// The onListen callback is called when the stream receives its listener
/// and onCancel when the listener ends its subscription.
///
/// @description Checks that the onListen function is called when the stream
/// receives its listener.
/// @author kaigorodov


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

main() {
  bool onListenCalled = false;
  asyncStart();
  StreamController controller = new StreamController(
    onListen: () {
      onListenCalled = true;
      asyncEnd();
    }
  );

  Expect.isFalse(onListenCalled);
  StreamSubscription subs = controller.stream.listen((event) {});
  Expect.isTrue(onListenCalled);
}
