| // 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/lib/unittest.dart'; |
| |
| void isolateA() { |
| port.receive((msg, replyTo) { |
| expect(msg, "launch nested!"); |
| SendPort p = spawnFunction(isolateB); |
| p.call("alive?").then((msg) { |
| expect(msg, "and kicking"); |
| replyTo.send(499, null); |
| port.close(); |
| }); |
| }); |
| } |
| |
| void isolateB() { |
| port.receive((msg, replyTo) { |
| expect(msg, "alive?"); |
| 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(msg, 499); |
| })); |
| }); |
| } |