| // 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 that isolates can spawn other isolates. |
| |
| #library('NestedSpawnTest'); |
| #import("dart:isolate"); |
| #import('../../pkg/unittest/unittest.dart'); |
| |
| void isolateA() { |
| port.receive((msg, replyTo) { |
| Expect.equals("launch nested!", msg); |
| SendPort p = spawnFunction(isolateB); |
| p.call("alive?").then((msg) { |
| Expect.equals("and kicking", msg); |
| replyTo.send(499, null); |
| port.close(); |
| }); |
| }); |
| } |
| |
| void isolateB() { |
| port.receive((msg, replyTo) { |
| Expect.equals("alive?", msg); |
| replyTo.send("and kicking", null); |
| port.close(); |
| }); |
| } |
| |
| |
| main() { |
| test("spawned isolates can spawn nested isolates", () { |
| SendPort port = spawnFunction(isolateA); |
| port.call("launch nested!").then(expectAsync1((msg) { |
| Expect.equals(499, msg); |
| })); |
| }); |
| } |