| // 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. |
| |
| // @dart = 2.9 |
| |
| // 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; |
| } |
| } |