blob: 9b3c721818292e74c75d1beb34f95273d26f12be [file] [log] [blame]
// Copyright 2014 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:io';
import 'package:file/file.dart';
import 'package:file/local.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:platform/platform.dart';
int test1(int value) {
return value + 1;
}
int test2(int value) {
throw 2;
}
Future<int> test1Async(int value) async {
return value + 1;
}
Future<int> test2Async(int value) async {
throw 2;
}
void main() {
test('compute()', () async {
expect(await compute(test1, 0), 1);
expect(compute(test2, 0), throwsException);
expect(await compute(test1Async, 0), 1);
expect(compute(test2Async, 0), throwsException);
}, skip: kIsWeb); // [intended] isn't supported on the web.
test('compute closes all ports', () async {
// Run a Dart script that calls compute().
// The Dart process will terminate only if the script exits cleanly with
// all isolate ports closed.
const FileSystem fs = LocalFileSystem();
const Platform platform = LocalPlatform();
final String flutterRoot = platform.environment['FLUTTER_ROOT']!;
final String dartPath = fs.path.join(flutterRoot, 'bin', 'cache', 'dart-sdk', 'bin', 'dart');
final String packageRoot = fs.path.dirname(fs.path.fromUri(platform.script));
final String scriptPath = fs.path.join(packageRoot, 'test', 'foundation', '_compute_caller.dart');
final ProcessResult result = await Process.run(dartPath, <String>[scriptPath]);
expect(result.exitCode, 0);
}, skip: kIsWeb); // [intended] isn't supported on the web.
}