// Copyright (c) 2017, 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<List<int>> bind(Stream<List<int>> stream)
 * Transforms the provided stream.
 * Returns a new stream with events that are computed from events of the
 * provided stream.
 * @description Checks that the bind method transforms stream's events.
 * @author ngl@unipro.ru
 * @author a.semenov@unipro.ru
 */
import "dart:async";
import "dart:io";
import "../../../Utils/expect.dart";

void check(List<int> data) {
  ZLibEncoder encoder = new ZLibEncoder();
  Stream<List<int>> s = new Stream.fromIterable([data]);
  
  AsyncExpect.data(
    encoder.convert(data),
    encoder.bind(s).expand<int>((List<int> e) => e)
  );
}

main() {
  check([]);
  check([1, 2, 3, 4, 5, 6]);
}
