// 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 = 2.9

// Example of spawning an isolate from a function.
library spawn_tests;

import 'dart:isolate';
import 'package:async_helper/async_helper.dart';
import 'package:expect/expect.dart';

isolateEntryPoint(args) {
  var msg = args[0];
  var sendPort = args[1];
  sendPort.send('re: $msg');
}

Future<void> main([args, port]) async {
  // message - reply chain
  const String debugName = 'spawnedIsolate';

  ReceivePort port = new ReceivePort();
  asyncStart();
  port.listen((msg) {
    port.close();
    Expect.equals(msg, 're: hi');
    asyncEnd();
  });

  // Start new isolate; paused so it's alive till we read the debugName.
  // If the isolate runs to completion, the isolate might get cleaned up
  // and debugName might be null.
  final isolate = await Isolate.spawn(isolateEntryPoint, ['hi', port.sendPort],
      paused: true, debugName: debugName);

  Expect.equals(isolate.debugName, debugName);
  isolate.resume(isolate.pauseCapability);
}
