| // 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. |
| |
| // negative test to ensure that API_unresolvedPortsTest works. |
| #library('unresolved_ports'); |
| #import('dart:isolate'); |
| #import('../../pkg/unittest/unittest.dart'); |
| |
| bethIsolate() { |
| port.receive(expectAsync2((msg, reply) => msg[1].send( |
| '${msg[0]}\nBeth says: Tim are you coming? And Bob?', reply))); |
| } |
| |
| timIsolate() { |
| SendPort bob = spawnFunction(bobIsolate); |
| port.receive(expectAsync2((msg, reply) => bob.send( |
| '$msg\nTim says: Can you tell "main" that we are all coming?', reply))); |
| } |
| |
| bobIsolate() { |
| port.receive(expectAsync2((msg, reply) => reply.send( |
| '$msg\nBob says: we are all coming!'))); |
| } |
| |
| main() { |
| test('Message chain with unresolved ports', () { |
| ReceivePort port = new ReceivePort(); |
| port.receive(expectAsync2((msg, _) { |
| expect(msg, equals('main says: Beth, find out if Tim is coming.' |
| + '\nBeth says: Tim are you coming? And Bob?' |
| + '\nTim says: Can you tell "main" that we are all coming?' |
| + '\nBob says: we are NOT coming!')); // should be 'all', not 'NOT' |
| port.close(); |
| })); |
| |
| SendPort tim = spawnFunction(timIsolate); |
| SendPort beth = spawnFunction(bethIsolate); |
| |
| beth.send( |
| // because tim is created asynchronously, here we are sending an |
| // unresolved port: |
| ['main says: Beth, find out if Tim is coming.', tim], |
| port.toSendPort()); |
| }); |
| } |
| |