6b3abe0a98
Issue b/177800357. TEST=existing test suite Change-Id: Id6b113932ab7014b8fa6c105845c5c490b60f5e8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/181320 Commit-Queue: Alexander Aprelev <aam@google.com> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
86 lines
2.1 KiB
Dart
86 lines
2.1 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.
|
|
|
|
// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
|
|
// VMOptions=--no-enable-isolate-groups
|
|
|
|
// Test RawReceivePort.
|
|
|
|
library raw_port_test;
|
|
|
|
import 'dart:async';
|
|
import 'dart:isolate';
|
|
import 'package:async_helper/async_helper.dart';
|
|
import 'package:expect/expect.dart';
|
|
|
|
void remote(SendPort port) {
|
|
port.send("reply");
|
|
}
|
|
|
|
void remote2(SendPort port) {
|
|
port.send("reply 1");
|
|
port.send("reply 2");
|
|
}
|
|
|
|
main([args, port]) async {
|
|
// Raw receive
|
|
asyncTest(() {
|
|
final completer = Completer<void>();
|
|
RawReceivePort port = new RawReceivePort();
|
|
Isolate.spawn(remote, port.sendPort);
|
|
port.handler = (v) {
|
|
Expect.equals(v, "reply");
|
|
port.close();
|
|
completer.complete();
|
|
};
|
|
return completer.future;
|
|
});
|
|
|
|
// Raw receive hashCode
|
|
{
|
|
RawReceivePort port = new RawReceivePort();
|
|
Expect.isTrue(port.hashCode is int);
|
|
port.close();
|
|
}
|
|
|
|
// Raw receive twice - change handler
|
|
asyncTest(() {
|
|
final completer = Completer<void>();
|
|
RawReceivePort port = new RawReceivePort();
|
|
Isolate.spawn(remote2, port.sendPort);
|
|
port.handler = (v) {
|
|
Expect.equals(v, "reply 1");
|
|
port.handler = (v) {
|
|
Expect.equals(v, "reply 2");
|
|
port.close();
|
|
completer.complete();
|
|
};
|
|
};
|
|
return completer.future;
|
|
});
|
|
|
|
// From raw port
|
|
asyncTest(() {
|
|
final completer = Completer<void>();
|
|
RawReceivePort rawPort = new RawReceivePort();
|
|
Isolate.spawn(remote, rawPort.sendPort);
|
|
rawPort.handler = (v) {
|
|
Expect.equals(v, "reply");
|
|
ReceivePort port = new ReceivePort.fromRawReceivePort(rawPort);
|
|
Isolate.spawn(remote, rawPort.sendPort);
|
|
Isolate.spawn(remote, port.sendPort);
|
|
int ctr = 2;
|
|
port.listen(
|
|
(v) {
|
|
Expect.equals(v, "reply");
|
|
ctr--;
|
|
if (ctr == 0) port.close();
|
|
},
|
|
onDone: () => completer.complete(),
|
|
);
|
|
};
|
|
return completer.future;
|
|
});
|
|
}
|