// Copyright (c) 2016, 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 const Stream.empty()
/// Creates an empty broadcast stream.
///
/// This is a stream which does nothing except sending a done event when it's
/// listened to.
///
/// @description Checks that Stream.empty() constructor creates empty stream.
/// @author ngl@unipro.ru

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

main() {
  asyncStart();
  new Stream.empty().listen(
    (_) {
      Expect.fail("Created stream should be empty");
    },
    onDone: () {
      asyncEnd();
    }
  );
}
