Index: tests/language/deferred_in_isolate_test.dart |
=================================================================== |
--- tests/language/deferred_in_isolate_test.dart (revision 0) |
+++ tests/language/deferred_in_isolate_test.dart (working copy) |
@@ -0,0 +1,38 @@ |
+// Copyright (c) 2014, 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 deferred libraries are supported from isolates other than the root |
+// isolate. |
+ |
+import 'dart:isolate'; |
+ |
+main() { |
+ try { |
+ var receivePort = new RawReceivePort(); |
+ var expectedMsg = "Deferred Loaded."; |
+ |
+ receivePort.handler = (msg) { |
+ if (msg != expectedMsg) { |
+ print("Test failed."); |
+ throw msg; // Fail the test if the message is not expected. |
+ } |
+ print('Test done.'); |
+ receivePort.close(); |
+ }; |
+ |
+ var stopwatch = new Stopwatch()..start(); |
+ Isolate.spawnUri(new Uri(path: 'deferred_in_isolate_app.dart'), |
+ [expectedMsg], |
+ [receivePort.sendPort]).then((isolate) { |
+ print('Isolate spawn: ${stopwatch.elapsedMilliseconds}ms'); |
+ }).catchError((error) { |
+ print(error); |
+ }); |
+ } catch (exception, stackTrace) { |
+ print('Test failed.'); |
+ print(exception); |
+ print(stackTrace); |
+ rethrow; |
+ } |
+} |