// 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 Future<List<T>> toList()
/// Collects the data of this stream in a List.
/// @description Checks that returned list contains all elements of the stream in the same order.
/// @author kaigorodov

import "dart:async";
import "../../../Utils/expect.dart";
import "IsolateStream.dart" as IsolateStream;

void check(List data) {
  Stream s = IsolateStream.fromIterable(data);
  Future f = s.toList();
  asyncStart();
  f.then((value) {
    Expect.listEquals(data, value);
    asyncEnd();
  });
}

main() {
  check([]);
  check([-1, -2, -3, 1, 2, 3 - 1, -2, -3]);
  check([1, 2, 3]);
  check([
    [],
    [[]],
    [
      [[]]
    ]
  ]);
  check(["1", 2, null]);
}
