blob: 7f88d2bf2dfe809688dbb1f29eeff6e21f6d489b [file] [log] [blame]
// Copyright (c) 2020, 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.
import 'package:analysis_server/src/edit/nnbd_migration/migration_info.dart';
import 'package:analysis_server/src/edit/nnbd_migration/path_mapper.dart';
import 'package:analysis_server/src/edit/nnbd_migration/region_renderer.dart';
import 'package:analysis_server/src/edit/nnbd_migration/web/edit_details.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'nnbd_migration_test_base.dart';
void main() {
defineReflectiveSuite(() {
defineReflectiveTests(RegionRendererTest);
});
}
@reflectiveTest
class RegionRendererTest extends NnbdMigrationTestBase {
/// Render the region at [offset], using a [MigrationInfo] which knows only
/// about the library at `infos.single`.
EditDetails renderRegion(int offset) {
var packageRoot = convertPath('/package');
var migrationInfo =
MigrationInfo(infos, {}, resourceProvider.pathContext, packageRoot);
var unitInfo = infos.single;
var region = unitInfo.regionAt(offset);
return RegionRenderer(
region, unitInfo, migrationInfo, PathMapper(resourceProvider))
.render();
}
Future<void> test_modifiedOutput_containsExplanation() async {
await buildInfoForSingleTestFile('int a = null;',
migratedContent: 'int? a = null;');
var response = renderRegion(3);
expect(response.explanation, equals("Changed type 'int' to be nullable"));
}
Future<void> test_modifiedOutput_containsPath() async {
await buildInfoForSingleTestFile('int a = null;',
migratedContent: 'int? a = null;');
var response = renderRegion(3);
expect(response.path, equals(convertPath('/project/bin/test.dart')));
expect(response.line, equals(1));
}
Future<void> test_unmodifiedOutput_containsExplanation() async {
await buildInfoForSingleTestFile('f(int a) => a.isEven;',
migratedContent: 'f(int a) => a.isEven;');
var response = renderRegion(5);
expect(response.explanation, equals("Type 'int' was not made nullable"));
}
Future<void> test_unmodifiedOutput_containsPath() async {
await buildInfoForSingleTestFile('f(int a) => a.isEven;',
migratedContent: 'f(int a) => a.isEven;');
var response = renderRegion(5);
expect(response.path, equals(convertPath('/project/bin/test.dart')));
expect(response.line, equals(1));
}
}