// Copyright (c) 2011-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 factory RawReceivePort([void handler(event)])
/// Opens a long-lived port for receiving messages.
///
/// @description Checks that the function passed as argument is invoked for every
/// incoming message
///
/// @author kaigorodov

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

String expectedMessage = "message";

RawReceivePort receivePort = new RawReceivePort(receiveHandler);

void receiveHandler(message) {
  Expect.equals(expectedMessage, message);
  receivePort.close();
  asyncEnd();
}

void iMain(SendPort replyPort) {
  replyPort.send(expectedMessage);
}

main() {
  asyncStart();
  Isolate.spawn(iMain, receivePort.sendPort);
}
