| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 // Dart test program for testing that heavy and light isolates can be mixed. | 5 // Dart test program for testing that heavy and light isolates can be mixed. |
| 6 | 6 |
| 7 #library('Mixed2Test'); | 7 #library('Mixed2Test'); |
| 8 #import("dart:isolate"); | 8 #import("dart:isolate"); |
| 9 #import('TestFramework.dart'); | 9 #import('../../../lib/unittest/unittest.dart'); |
| 10 | 10 |
| 11 // We want to send a message from the main-isolate to a chain of different | 11 // We want to send a message from the main-isolate to a chain of different |
| 12 // isolates and then get a reply back. | 12 // isolates and then get a reply back. |
| 13 // In the following description heavy2 is not used, because it is shut down | 13 // In the following description heavy2 is not used, because it is shut down |
| 14 // just after heaving created heavy2.light1,2 and light3. | 14 // just after heaving created heavy2.light1,2 and light3. |
| 15 // main-> | 15 // main-> |
| 16 // heavy1->heavy1.light1->heavy1.light2->heavy1.light3-> | 16 // heavy1->heavy1.light1->heavy1.light2->heavy1.light3-> |
| 17 // heavy2.light1->heavy2.light2->heavy2.light3-> | 17 // heavy2.light1->heavy2.light2->heavy2.light3-> |
| 18 // heavy3->heavy3.pong | 18 // heavy3->heavy3.pong |
| 19 | 19 |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 Future<SendPort> pong = new LightPong().spawn(); | 100 Future<SendPort> pong = new LightPong().spawn(); |
| 101 this.port.receive((msg, replyTo) { | 101 this.port.receive((msg, replyTo) { |
| 102 pong.then((SendPort pongPort) { | 102 pong.then((SendPort pongPort) { |
| 103 pongPort.send(msg + 30, replyTo); | 103 pongPort.send(msg + 30, replyTo); |
| 104 this.port.close(); | 104 this.port.close(); |
| 105 }); | 105 }); |
| 106 }); | 106 }); |
| 107 } | 107 } |
| 108 } | 108 } |
| 109 | 109 |
| 110 void test(TestExpectation expect) { | |
| 111 Future<SendPort> heavy1 = expect.completes(new HeavyIsolate1().spawn()); | |
| 112 Future<SendPort> heavy2 = expect.completes(new HeavyIsolate2().spawn()); | |
| 113 Future<SendPort> heavy3 = expect.completes(new HeavyIsolate3().spawn()); | |
| 114 | 110 |
| 115 heavy2.then(expect.runs1((SendPort heavy2Port) { | 111 main() { |
| 116 heavy3.then(expect.runs1((SendPort heavy3Port) { | 112 test("heavy and light isolates can be mixed", () { |
| 117 heavy2Port.call(heavy3Port).then(expect.runs1((h2l1Port) { | 113 Future<SendPort> heavy1 = new HeavyIsolate1().spawn(); |
| 118 heavy1.then(expect.runs1((SendPort heavy1Port) { | 114 Future<SendPort> heavy2 = new HeavyIsolate2().spawn(); |
| 119 heavy1Port.send(h2l1Port, null); | 115 Future<SendPort> heavy3 = new HeavyIsolate3().spawn(); |
| 120 // --------------- | 116 |
| 121 // Setup complete. | 117 heavy2.then(later1((SendPort heavy2Port) { |
| 122 // Start the chain-message. | 118 heavy3.then(later1((SendPort heavy3Port) { |
| 123 heavy1Port.call(1).then(expect.runs1((result) { | 119 heavy2Port.call(heavy3Port).then(later1((h2l1Port) { |
| 124 Expect.equals(6531, result); | 120 heavy1.then(later1((SendPort heavy1Port) { |
| 125 expect.succeeded(); | 121 heavy1Port.send(h2l1Port, null); |
| 122 // --------------- |
| 123 // Setup complete. |
| 124 // Start the chain-message. |
| 125 heavy1Port.call(1).then(later1((result) { |
| 126 Expect.equals(6531, result); |
| 127 })); |
| 126 })); | 128 })); |
| 127 })); | 129 })); |
| 128 })); | 130 })); |
| 129 })); | 131 })); |
| 130 })); | 132 }); |
| 131 } | 133 } |
| 132 | |
| 133 main() { | |
| 134 runTests([test]); | |
| 135 } | |
| OLD | NEW |