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

library lib;

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

child(SendPort port) {
  LibraryMirror root = currentMirrorSystem().isolate.rootLibrary;
  Expect.isNotNull(root);
  port.send(root.uri.toString());
}

main() {
  final port = new RawReceivePort();
  port.handler = (String childRootUri) {
    LibraryMirror root = currentMirrorSystem().isolate.rootLibrary;
    Expect.isNotNull(root);
    Expect.equals(root.uri.toString(), childRootUri);
    port.close();
  };

  Isolate.spawn(child, port.sendPort);
}
