// 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.

// Create a user-defined class in a new isolate.
//
// Regression test for vm bug 2235: We were forgetting to finalize
// classes in new isolates started using the v2 api.

#library('spawn_tests');
#import('dart:isolate');
#import('../../pkg/unittest/unittest.dart');

class MyClass {
  var myVar = 'there';
  myFunc(msg) {
    return '$msg $myVar';
  }
}

child() {
  port.receive((msg, reply) {
    reply.send('re: ${new MyClass().myFunc(msg)}');
  });
}

main() {
  test('message - reply chain', () {
    ReceivePort port = new ReceivePort();
    port.receive(expectAsync(msg, _) {
      port.close();
      expect(msg, equals('re: hi there'));
    });

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