dart-sdk/tests/isolate/typed_message_test.dart
floitsch@google.com f4a1b28077 Move isolate tests to lib/isolate.
Moves most tests that require dart:isolate to the isolate-directory in the tests section.

Also enables the string_from_environment_default_value_test which didn't have "_test" in its name.

R=lrn@google.com

Review URL: https://codereview.chromium.org//1133983002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45701 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-11 17:59:51 +00:00

51 lines
1.5 KiB
Dart

// Copyright (c) 2012, 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.
// Dart test program for testing isolate communication with
// typed objects.
// VMOptions=--checked
library TypedMessageTest;
import "dart:async";
import "package:expect/expect.dart";
import "package:async_helper/async_helper.dart";
import "dart:isolate";
void logMessages(SendPort replyTo) {
print("Starting log server.");
ReceivePort port = new ReceivePort();
replyTo.send(port.sendPort);
port.first.then((List<int> message) {
print("Log $message");
Expect.equals(5, message.length);
Expect.equals(0, message[0]);
Expect.equals(1, message[1]);
Expect.equals(2, message[2]);
Expect.equals(3, message[3]);
Expect.equals(4, message[4]);
port.close();
replyTo.send(1);
print("Stopping log server.");
});
}
main() {
asyncStart();
ReceivePort receivePort = new ReceivePort();
Future<Isolate> remote = Isolate.spawn(logMessages, receivePort.sendPort);
List<int> msg = new List<int>(5);
for (int i = 0; i < 5; i++) {
msg[i] = i;
}
StreamIterator iterator = new StreamIterator(receivePort);
iterator.moveNext().then((b) {
SendPort sendPort = iterator.current;
sendPort.send(msg);
return iterator.moveNext();
}).then((b) {
Expect.equals(1, iterator.current);
receivePort.close();
asyncEnd();
});
}