// 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 asyncMap(dynamic convert(T event))
/// Creates a new stream with each data event of this stream asynchronously
/// mapped to a new event.
///
/// This acts like map, except that convert may return a Future, and in that
/// case, the stream waits for that future to complete before continuing with
/// its result.
///
/// Stream<S> map<S>(S convert(T event))
/// ...
/// Error and done events are passed through unchanged to the returned stream.
///
/// @description Checks that each error thrown by [convert] is passed to returned
/// stream.
/// @author a.semenov@unipro.ru

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

void test(CreateStreamFunction create) {
  Stream<String> stream1 = create(["a", "b", "c"]);
  AsyncExpect.events([], ["a", "b", "c"], stream1.asyncMap((e) => throw e));

  Stream<int> stream2 = create([1, 2, 3, 4, 5]);
  AsyncExpect.events(
      [1, 3, 5], // expected data
      [2, 4],   // expected errors
      stream2.asyncMap((int e) => e.isOdd ? e : throw e) // stream
  );
}
