// Copyright (c) 2013, 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.

/// @assertionabstract StreamSubscription listen(void onData(message), {Function onError, void onDone(), bool cancelOnError})
/// Note that all named arguments are ignored since a ReceivePort will never receive an error,
/// or done message.
/// @description Checks that on each data event from this stream,
/// the subscriber's onData handler is called.
/// @author kaigorodov

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

void check(List data) {
  ReceivePort s1 = IsolateStream.fromIterable(data);
  List sink = [];
  asyncStart();
  s1.listen((var event) {
    sink.add(event);
  }, onDone: () {
    Expect.listEquals(data, sink);
    asyncEnd();
  });
}

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