Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Unified Diff: pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart

Issue 2955913002: Fixes and tests for adding library imports. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart
diff --git a/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart b/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart
index 051b39d754d0428599111e733e78a93f183a727e..5deadf51d3a448782e7a16764a5ad16e4042d1d2 100644
--- a/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart
@@ -75,6 +75,266 @@ class DartChangeBuilderImplTest extends AbstractContextTest {
@reflectiveTest
class DartEditBuilderImplTest extends AbstractContextTest
with BuilderTestMixin {
+ test_importLibraries_DP() async {
+ await _assertImportLibraries(
+ '''
+import 'dart:aaa';
+import 'dart:ccc';
+
+import 'package:aaa/aaa.dart';
+import 'package:ccc/ccc.dart';
+''',
+ ['dart:bbb', 'package:bbb/bbb.dart'],
+ '''
+import 'dart:aaa';
+import 'dart:bbb';
+import 'dart:ccc';
+
+import 'package:aaa/aaa.dart';
+import 'package:bbb/bbb.dart';
+import 'package:ccc/ccc.dart';
+''');
+ }
+
+ test_importLibraries_PD() async {
+ await _assertImportLibraries(
+ '''
+import 'dart:aaa';
+import 'dart:ccc';
+
+import 'package:aaa/aaa.dart';
+import 'package:ccc/ccc.dart';
+''',
+ ['package:bbb/bbb.dart', 'dart:bbb'],
+ '''
+import 'dart:aaa';
+import 'dart:bbb';
+import 'dart:ccc';
+
+import 'package:aaa/aaa.dart';
+import 'package:bbb/bbb.dart';
+import 'package:ccc/ccc.dart';
+''');
+ }
+
+ test_importLibrary_afterLibraryDirective_dart() async {
+ await _assertImportLibraries(
+ '''
+library test;
+
+class A {}
+''',
+ ['dart:async'],
+ '''
+library test;
+
+import 'dart:async';
+
+
+class A {}
+''');
+ }
+
+ test_importLibrary_dart_beforeDart() async {
+ await _assertImportLibraries(
+ '''
+import 'dart:aaa';
+import 'dart:ccc';
+''',
+ ['dart:bbb'],
+ '''
+import 'dart:aaa';
+import 'dart:bbb';
+import 'dart:ccc';
+''');
+ }
+
+ test_importLibrary_dart_beforeDart_first() async {
+ await _assertImportLibraries(
+ '''
+import 'dart:bbb';
+''',
+ ['dart:aaa'],
+ '''
+import 'dart:aaa';
+import 'dart:bbb';
+''');
+ }
+
+ test_importLibrary_dart_beforePackage() async {
+ await _assertImportLibraries(
+ '''
+import 'package:foo/foo.dart';
+''',
+ ['dart:async'],
+ '''
+import 'dart:async';
+
+import 'package:foo/foo.dart';
+''');
+ }
+
+ test_importLibrary_package_afterDart() async {
+ await _assertImportLibraries(
+ '''
+import 'dart:async';
+''',
+ ['package:aaa/aaa.dart'],
+ '''
+import 'dart:async';
+
+import 'package:aaa/aaa.dart';
+''');
+ }
+
+ test_importLibrary_package_afterPackage() async {
+ await _assertImportLibraries(
+ '''
+import 'package:aaa/a1.dart';
+
+import 'foo.dart';
+''',
+ ['package:aaa/a2.dart'],
+ '''
+import 'package:aaa/a1.dart';
+import 'package:aaa/a2.dart';
+
+import 'foo.dart';
+''');
+ }
+
+ test_importLibrary_package_beforePackage() async {
+ await _assertImportLibraries(
+ '''
+import 'package:aaa/a1.dart';
+import 'package:aaa/a3.dart';
+
+import 'foo.dart';
+''',
+ ['package:aaa/a2.dart'],
+ '''
+import 'package:aaa/a1.dart';
+import 'package:aaa/a2.dart';
+import 'package:aaa/a3.dart';
+
+import 'foo.dart';
+''');
+ }
+
+ test_importLibrary_package_beforePackage_first() async {
+ await _assertImportLibraries(
+ '''
+import 'package:aaa/a2.dart';
+
+import 'foo.dart';
+''',
+ ['package:aaa/a1.dart'],
+ '''
+import 'package:aaa/a1.dart';
+import 'package:aaa/a2.dart';
+
+import 'foo.dart';
+''');
+ }
+
+ test_importLibrary_package_beforeRelative() async {
+ await _assertImportLibraries(
+ '''
+import 'foo.dart';
+''',
+ ['package:aaa/aaa.dart'],
+ '''
+import 'package:aaa/aaa.dart';
+
+import 'foo.dart';
+''');
+ }
+
+ test_importLibrary_relative_afterDart() async {
+ await _assertImportLibraries(
+ '''
+import 'dart:async';
+''',
+ ['aaa.dart'],
+ '''
+import 'dart:async';
+
+import 'aaa.dart';
+''');
+ }
+
+ test_importLibrary_relative_afterPackage() async {
+ await _assertImportLibraries(
+ '''
+import 'package:foo/foo.dart';
+''',
+ ['aaa.dart'],
+ '''
+import 'package:foo/foo.dart';
+
+import 'aaa.dart';
+''');
+ }
+
+ test_importLibrary_relative_beforeRelative() async {
+ await _assertImportLibraries(
+ '''
+import 'dart:async';
+
+import 'package:foo/foo.dart';
+
+import 'aaa.dart';
+import 'ccc.dart';
+''',
+ ['bbb.dart'],
+ '''
+import 'dart:async';
+
+import 'package:foo/foo.dart';
+
+import 'aaa.dart';
+import 'bbb.dart';
+import 'ccc.dart';
+''');
+ }
+
+ test_importLibrary_relative_beforeRelative_first() async {
+ await _assertImportLibraries(
+ '''
+import 'dart:async';
+
+import 'package:foo/foo.dart';
+
+import 'bbb.dart';
+''',
+ ['aaa.dart'],
+ '''
+import 'dart:async';
+
+import 'package:foo/foo.dart';
+
+import 'aaa.dart';
+import 'bbb.dart';
+''');
+ }
+
+ test_importLibrary_relative_last() async {
+ await _assertImportLibraries(
+ '''
+import 'dart:async';
+
+import 'package:foo/foo.dart';
+''',
+ ['aaa.dart'],
+ '''
+import 'dart:async';
+
+import 'package:foo/foo.dart';
+
+import 'aaa.dart';
+''');
+ }
+
test_writeClassDeclaration_interfaces() async {
String path = provider.convertPath('/test.dart');
addSource(path, 'class A {}');
@@ -1098,6 +1358,27 @@ f(int i, String s) {
expect(edit.replacement, equalsIgnoringWhitespace('implements A, B'));
}
+ Future<Null> _assertImportLibraries(
+ String initialCode, List<String> newUris, String expectedCode) async {
+ String path = provider.convertPath('/test.dart');
+ addSource(path, initialCode);
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
+ await builder.addFileEdit(path, 1, (DartFileEditBuilder builder) {
+ Iterable<_MockSource> sources = newUris.map((newUri) {
+ String path = newUri.contains(':') ? null : '/$newUri';
+ return new _MockSource(path, Uri.parse(newUri));
+ });
+ builder.importLibraries(sources);
+ });
+
+ String resultCode = initialCode;
+ List<SourceEdit> edits = getEdits(builder);
+ for (SourceEdit edit in edits) {
+ resultCode = edit.apply(resultCode);
+ }
+ expect(resultCode, expectedCode);
+ }
+
Future<ClassElement> _getClassElement(String path, String name) async {
UnitElementResult result = await driver.getUnitElement(path);
return result.element.getType(name);
@@ -1199,3 +1480,15 @@ class C extends B {}
unorderedEquals(['Object', 'A', 'B', 'C']));
}
}
+
+class _MockSource implements Source {
+ @override
+ final String fullName;
+
+ @override
+ final Uri uri;
+
+ _MockSource(this.fullName, this.uri);
+
+ noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
+}
« no previous file with comments | « pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698