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

// Test that spawn works even when there are many script files in the page.
// This requires computing correctly the URL to the orignal script, so we can
// pass it to the web worker APIs.
#library('compute_this_script');

#import('dart:html');
#import('dart:isolate');

#import('../../pkg/unittest/unittest.dart');
#import('../../pkg/unittest/html_config.dart');

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

main() {
  useHtmlConfiguration();
  var script = document.$dom_createElement('script');
  document.body.$dom_appendChild(script);
  test('spawn with other script tags in page', () {
    ReceivePort port = new ReceivePort();
    port.receive(expectAsync2((msg, _) {
      expect(msg, equals('re: hi'));
      port.close();
    }));

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