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

Unified Diff: pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart

Issue 1117183004: More source utilities (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 8 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
Index: pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart
diff --git a/pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart b/pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart
index 8561850e79a87197a9992d700d22b07a46368167..3e73a390a6881a51393506fbd266b8ca8d5c2df3 100644
--- a/pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart
+++ b/pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart
@@ -54,6 +54,23 @@ class DartEditBuilderImplTest extends AbstractContextTest {
return edits[0];
}
+ void test_writeClassDeclaration_interfaces() {
+ Source source = addSource('/test.dart', 'class A {}');
+ CompilationUnit unit = resolveLibraryUnit(source);
+ ClassDeclaration declaration = unit.declarations[0];
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(0, (DartEditBuilder builder) {
+ builder.writeClassDeclaration('C',
+ interfaces: [declaration.element.type]);
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(
+ edit.replacement, equalsIgnoringWhitespace('class C implements A { }'));
+ }
+
void test_writeClassDeclaration_isAbstract() {
Source source = addSource('/test.dart', '');
resolveLibraryUnit(source);
@@ -68,14 +85,64 @@ class DartEditBuilderImplTest extends AbstractContextTest {
expect(edit.replacement, equalsIgnoringWhitespace('abstract class C { }'));
}
- void test_writeClassDeclaration_nameOnly() {
+ void test_writeClassDeclaration_memberWriter() {
+ Source source = addSource('/test.dart', '');
+ resolveLibraryUnit(source);
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(0, (DartEditBuilder builder) {
+ builder.writeClassDeclaration('C', memberWriter: () {
+ builder.write('/**/');
+ });
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('class C { /**/ }'));
+ }
+
+ void test_writeClassDeclaration_mixins_noSuperclass() {
+ Source source = addSource('/test.dart', 'class A {}');
+ CompilationUnit unit = resolveLibraryUnit(source);
+ ClassDeclaration classA = unit.declarations[0];
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(0, (DartEditBuilder builder) {
+ builder.writeClassDeclaration('C', mixins: [classA.element.type]);
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement,
+ equalsIgnoringWhitespace('class C extends Object with A { }'));
+ }
+
+ void test_writeClassDeclaration_mixins_superclass() {
+ Source source = addSource('/test.dart', 'class A {} class B {}');
+ CompilationUnit unit = resolveLibraryUnit(source);
+ ClassDeclaration classA = unit.declarations[0];
+ ClassDeclaration classB = unit.declarations[1];
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(0, (DartEditBuilder builder) {
+ builder.writeClassDeclaration('C',
+ mixins: [classB.element.type], superclass: classA.element.type);
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement,
+ equalsIgnoringWhitespace('class C extends A with B { }'));
+ }
+
+ void test_writeClassDeclaration_nameGroupName() {
Source source = addSource('/test.dart', '');
resolveLibraryUnit(source);
DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
builder.addInsertion(0, (DartEditBuilder builder) {
- builder.writeClassDeclaration('C');
+ builder.writeClassDeclaration('C', nameGroupName: 'name');
});
});
SourceEdit edit = getEdit(builder);
@@ -105,6 +172,214 @@ class DartEditBuilderImplTest extends AbstractContextTest {
expect(edit.replacement, equalsIgnoringWhitespace('class C extends B { }'));
}
+ void test_writeFieldDeclaration_initializerWriter() {
+ String content = 'class A {}';
+ Source source = addSource('/test.dart', content);
+ resolveLibraryUnit(source);
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilder builder) {
+ builder.writeFieldDeclaration('f', initializerWriter: () {
+ builder.write('e');
+ });
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('var f = e;'));
+ }
+
+ void test_writeFieldDeclaration_isConst() {
+ String content = 'class A {}';
+ Source source = addSource('/test.dart', content);
+ resolveLibraryUnit(source);
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilder builder) {
+ builder.writeFieldDeclaration('f', isConst: true);
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('const f;'));
+ }
+
+ void test_writeFieldDeclaration_isConst_isFinal() {
+ String content = 'class A {}';
+ Source source = addSource('/test.dart', content);
+ resolveLibraryUnit(source);
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilder builder) {
+ builder.writeFieldDeclaration('f', isConst: true, isFinal: true);
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('const f;'));
+ }
+
+ void test_writeFieldDeclaration_isFinal() {
+ String content = 'class A {}';
+ Source source = addSource('/test.dart', content);
+ resolveLibraryUnit(source);
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilder builder) {
+ builder.writeFieldDeclaration('f', isFinal: true);
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('final f;'));
+ }
+
+ void test_writeFieldDeclaration_isStatic() {
+ String content = 'class A {}';
+ Source source = addSource('/test.dart', content);
+ resolveLibraryUnit(source);
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilder builder) {
+ builder.writeFieldDeclaration('f', isStatic: true);
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('static var f;'));
+ }
+
+ void test_writeFieldDeclaration_nameGroupName() {
+ String content = 'class A {}';
+ Source source = addSource('/test.dart', content);
+ resolveLibraryUnit(source);
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilder builder) {
+ builder.writeFieldDeclaration('f', nameGroupName: 'name');
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('var f;'));
+
+ List<LinkedEditGroup> linkedEditGroups =
+ builder.sourceChange.linkedEditGroups;
+ expect(linkedEditGroups, hasLength(1));
+ LinkedEditGroup group = linkedEditGroups[0];
+ expect(group.length, 1);
+ expect(group.positions, hasLength(1));
+ Position position = group.positions[0];
+ expect(position.offset, equals(13));
+ }
+
+ void test_writeFieldDeclaration_type_typeGroupName() {
+ String content = 'class A {} class B {}';
+ Source source = addSource('/test.dart', content);
+ CompilationUnit unit = resolveLibraryUnit(source);
+ ClassDeclaration declaration = unit.declarations[0];
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilder builder) {
+ builder.writeFieldDeclaration('f',
+ type: declaration.element.type, typeGroupName: 'type');
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('A f;'));
+
+ List<LinkedEditGroup> linkedEditGroups =
+ builder.sourceChange.linkedEditGroups;
+ expect(linkedEditGroups, hasLength(1));
+ LinkedEditGroup group = linkedEditGroups[0];
+ expect(group.length, 1);
+ expect(group.positions, hasLength(1));
+ Position position = group.positions[0];
+ expect(position.offset, equals(20));
+ }
+
+ void test_writeGetterDeclaration_bodyWriter() {
+ String content = 'class A {}';
+ Source source = addSource('/test.dart', content);
+ resolveLibraryUnit(source);
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilderImpl builder) {
+ builder.writeGetterDeclaration('g', bodyWriter: () {
+ builder.write('{}');
+ });
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('get g {}'));
+ }
+
+ void test_writeGetterDeclaration_isStatic() {
+ String content = 'class A {}';
+ Source source = addSource('/test.dart', content);
+ resolveLibraryUnit(source);
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilderImpl builder) {
+ builder.writeGetterDeclaration('g', isStatic: true);
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('static get g => null;'));
+ }
+
+ void test_writeGetterDeclaration_nameGroupName() {
+ String content = 'class A {}';
+ Source source = addSource('/test.dart', content);
+ resolveLibraryUnit(source);
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilderImpl builder) {
+ builder.writeGetterDeclaration('g', nameGroupName: 'name');
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('get g => null;'));
+
+ List<LinkedEditGroup> linkedEditGroups =
+ builder.sourceChange.linkedEditGroups;
+ expect(linkedEditGroups, hasLength(1));
+ LinkedEditGroup group = linkedEditGroups[0];
+ expect(group.length, 1);
+ expect(group.positions, hasLength(1));
+ Position position = group.positions[0];
+ expect(position.offset, equals(13));
+ }
+
+ void test_writeGetterDeclaration_returnType() {
+ String content = 'class A {} class B {}';
+ Source source = addSource('/test.dart', content);
+ CompilationUnit unit = resolveLibraryUnit(source);
+ ClassDeclaration classA = unit.declarations[0];
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilderImpl builder) {
+ builder.writeGetterDeclaration('g', returnType: classA.element.type, returnTypeGroupName: 'returnType');
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('A get g => null;'));
+
+ List<LinkedEditGroup> linkedEditGroups =
+ builder.sourceChange.linkedEditGroups;
+ expect(linkedEditGroups, hasLength(1));
+ LinkedEditGroup group = linkedEditGroups[0];
+ expect(group.length, 1);
+ expect(group.positions, hasLength(1));
+ Position position = group.positions[0];
+ expect(position.offset, equals(20));
+ }
+
void test_writeOverrideOfInheritedMember() {
String content = '''
class A {
@@ -414,6 +689,72 @@ f(int i, String s) {
SourceEdit edit = getEdit(builder);
expect(edit.replacement, equalsIgnoringWhitespace('A'));
}
+
+ void test_writeTypes_empty() {
+ String content = 'class A {}';
+ Source source = addSource('/test.dart', content);
+ resolveLibraryUnit(source);
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilder builder) {
+ (builder as DartEditBuilderImpl).writeTypes([]);
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, isEmpty);
+ }
+
+ void test_writeTypes_noPrefix() {
+ String content = 'class A {} class B {}';
+ Source source = addSource('/test.dart', content);
+ CompilationUnit unit = resolveLibraryUnit(source);
+ ClassDeclaration classA = unit.declarations[0];
+ ClassDeclaration classB = unit.declarations[1];
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilder builder) {
+ (builder as DartEditBuilderImpl)
+ .writeTypes([classA.element.type, classB.element.type]);
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('A, B'));
+ }
+
+ void test_writeTypes_null() {
+ String content = 'class A {}';
+ Source source = addSource('/test.dart', content);
+ resolveLibraryUnit(source);
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilder builder) {
+ (builder as DartEditBuilderImpl).writeTypes(null);
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, isEmpty);
+ }
+
+ void test_writeTypes_prefix() {
+ String content = 'class A {} class B {}';
+ Source source = addSource('/test.dart', content);
+ CompilationUnit unit = resolveLibraryUnit(source);
+ ClassDeclaration classA = unit.declarations[0];
+ ClassDeclaration classB = unit.declarations[1];
+
+ DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
+ builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) {
+ builder.addInsertion(content.length - 1, (DartEditBuilder builder) {
+ (builder as DartEditBuilderImpl).writeTypes(
+ [classA.element.type, classB.element.type], prefix: 'implements ');
+ });
+ });
+ SourceEdit edit = getEdit(builder);
+ expect(edit.replacement, equalsIgnoringWhitespace('implements A, B'));
+ }
}
@reflectiveTest

Powered by Google App Engine
This is Rietveld 408576698