|  | // Copyright 2013 The Flutter Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | import 'dart:isolate'; | 
|  | import 'dart:ui'; | 
|  |  | 
|  | import 'package:test/test.dart'; | 
|  |  | 
|  | void main() { | 
|  | test('Invalid isolate URI', () async { | 
|  | bool threw = false; | 
|  | try { | 
|  | await Isolate.spawnUri( | 
|  | Uri.parse('http://127.0.0.1/foo.dart'), | 
|  | <String>[], | 
|  | null, | 
|  | ); | 
|  | } on IsolateSpawnException { | 
|  | threw = true; | 
|  | } | 
|  | expect(threw, true); | 
|  | }); | 
|  |  | 
|  | test('UI isolate API throws in a background isolate', () async { | 
|  | void callUiApi(void message) { | 
|  | PlatformDispatcher.instance.onReportTimings = (_) {}; | 
|  | } | 
|  | final ReceivePort errorPort = ReceivePort(); | 
|  | await Isolate.spawn<void>(callUiApi, null, onError: errorPort.sendPort); | 
|  | final List<dynamic> isolateError = await errorPort.first as List<dynamic>; | 
|  | expect(isolateError[0], 'UI actions are only available on root isolate.'); | 
|  | }); | 
|  | } |