// 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 make sure that we are reaching all assertions.
#library('spawn_tests');
#import('dart:isolate');
#import('../../pkg/unittest/unittest.dart');

child() {
  port.receive((msg, reply) => reply.send('re: $msg'));
}

main() {
  test('message - reply chain', () {
    ReceivePort port = new ReceivePort();
    port.receive(expectAsync2((msg, _) {
      port.close();
      expect(msg, equals('re: hello')); // should be hi, not hello
    }));

    SendPort s = spawnFunction(child);
    s.send('hi', port.toSendPort());
  });
}
