blob: 370b11cb4eb57f8adf3a42d1b88515ec7d6e89cd [file] [log] [blame]
// 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.
/**
* @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
);
}