blob: a71d595d6b7d018e7d1996fcc0dd8e36fb8c3d48 [file] [log] [blame]
// 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.
library test;
import 'package:expect/expect.dart';
import 'dart:async';
import 'dart:isolate';
import "package:async_helper/async_helper.dart";
runTest() {
SendPort mainIsolate;
bool isFirst = true;
port.receive((msg, replyTo) {
if (isFirst) {
mainIsolate = msg;
isFirst = false;
throw new UnsupportedError("ignore exception");
}
Expect.equals("message 2", msg);
mainIsolate.send("received");
});
}
bool globalErrorHandler(IsolateUnhandledException e) {
return e.source is UnsupportedError && e.source.message == "ignore exception";
}
main() {
// Make sure this test doesn't last longer than 2 seconds.
var timer = new Timer(const Duration(seconds: 2), () { throw "failed"; });
var port = new ReceivePort();
SendPort otherIsolate = spawnFunction(runTest, globalErrorHandler);
otherIsolate.send(port.toSendPort());
otherIsolate.send("message 2");
asyncStart();
port.receive((msg, replyPort) {
Expect.equals("received", msg);
port.close();
timer.cancel();
asyncEnd();
});
}