// 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.

/**
 * @assertion Stream<S> expand<S>(Iterable<S> convert(T value))
 *    Creates a new stream from this stream that converts each element into zero
 * or more events.
 *    Each incoming event is converted to an Iterable of new events, and each of
 * these new events are then sent by the returned stream in order.
 * @description Checks that returned stream produces all the values generated by
 * the convert function.
 * @author a.semenov@unipro.ru
 */
library expand_A01_t01;
import "dart:async";
import "../../../Utils/expect.dart";

void check<T,S>(Stream<T> s, Iterable<S> convert(T value), List<S> expected) {
  AsyncExpect.data(expected, s.expand(convert));
}

void test(CreateStreamFunction create) {
  check(create([]), (value) => [], []);
  check(create([]), (value) => [1], []);

  check(create([1, 2, 3]), (value) => [], []);
  check(create([1, 2, 3]), (value) => [1], [1, 1, 1]);
  check(create([1, 2, 3]), (value) => [value], [1, 2, 3]);
  check(create([1, 2, 3]), (v) => [v, v], [1, 1, 2, 2, 3, 3]);
  check(create([1, 2, 3]), (v) => [null, v], [null, 1, null, 2, null, 3]);

  check<List<int>, int>(create([[1, 2, 3], [4, 5]]), (value) => value,
    [1, 2, 3, 4, 5]);
}
