// Copyright (c) 2019, 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.

// VMOptions=--enable-isolate-groups --experimental-enable-isolate-groups-jit
// VMOptions=--no-enable-isolate-groups

import 'dart:isolate';
import 'dart:async';

import 'package:expect/expect.dart';

void isolateEntry(args) {
  final SendPort sendPort = args;
  sendPort.send('hello world');
}

main() async {
  final port = ReceivePort();
  final exitPort = ReceivePort();

  await Isolate.spawn(isolateEntry, port.sendPort, onExit: exitPort.sendPort);

  final messages = StreamIterator(port);
  Expect.isTrue(await messages.moveNext());
  Expect.equals('hello world', messages.current);
  await messages.cancel();

  final exit = StreamIterator(exitPort);
  Expect.isTrue(await exit.moveNext());
  await exit.cancel();
}
