// 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  Stream.fromFutures(Iterable<Future<T>> futures)
///    Create a stream from a group of futures.
///    The stream reports the results of the futures on the stream in the order
///  in which the futures complete.
///    If some futures have completed before calling Stream.fromFutures,
///  their result will be output on the created stream in some unspecified order.
///    When all futures have completed, the stream is closed.
///    If no future is passed, the stream closes as soon as possible.
/// @description Checks Stream interface methods
/// @author a.semenov@unipro.ru

import "dart:async";
import "allTests_A03.lib.dart";

Stream<T> create<T>(Iterable<T> data){
  Future<T> future = new Future.value();
  return new Stream.fromFutures(
    data.map(
      (T x) {
        return future = future.then((_) => x);
      }
    )
  );
}

main() {
  test(create);
}
