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

Side by Side Diff: pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart

Issue 2614033003: Make subclasses of AbstractContextTest asynchronous. (Closed)
Patch Set: Created 3 years, 11 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 unified diff | Download patch
« no previous file with comments | « pkg/analysis_server/test/services/search/search_engine_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analysis_server.test.src.utilities.change_builder_dart_test; 5 library analysis_server.test.src.utilities.change_builder_dart_test;
6 6
7 import 'package:analysis_server/plugin/protocol/protocol.dart'; 7 import 'package:analysis_server/plugin/protocol/protocol.dart';
8 import 'package:analysis_server/src/provisional/edit/utilities/change_builder_co re.dart'; 8 import 'package:analysis_server/src/provisional/edit/utilities/change_builder_co re.dart';
9 import 'package:analysis_server/src/provisional/edit/utilities/change_builder_da rt.dart'; 9 import 'package:analysis_server/src/provisional/edit/utilities/change_builder_da rt.dart';
10 import 'package:analysis_server/src/utilities/change_builder_dart.dart'; 10 import 'package:analysis_server/src/utilities/change_builder_dart.dart';
11 import 'package:analyzer/dart/ast/ast.dart'; 11 import 'package:analyzer/dart/ast/ast.dart';
12 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; 12 import 'package:analyzer/dart/ast/standard_resolution_map.dart';
13 import 'package:analyzer/dart/element/element.dart'; 13 import 'package:analyzer/dart/element/element.dart';
14 import 'package:analyzer/src/generated/source.dart'; 14 import 'package:analyzer/src/generated/source.dart';
15 import 'package:test/test.dart'; 15 import 'package:test/test.dart';
16 import 'package:test_reflective_loader/test_reflective_loader.dart'; 16 import 'package:test_reflective_loader/test_reflective_loader.dart';
17 17
18 import '../../abstract_context.dart'; 18 import '../../abstract_context.dart';
19 19
20 main() { 20 main() {
21 defineReflectiveSuite(() { 21 defineReflectiveSuite(() {
22 defineReflectiveTests(DartChangeBuilderImplTest); 22 defineReflectiveTests(DartChangeBuilderImplTest);
23 defineReflectiveTests(DartEditBuilderImplTest); 23 defineReflectiveTests(DartEditBuilderImplTest);
24 defineReflectiveTests(DartFileEditBuilderImplTest); 24 defineReflectiveTests(DartFileEditBuilderImplTest);
25 }); 25 });
26 } 26 }
27 27
28 @reflectiveTest 28 @reflectiveTest
29 class DartChangeBuilderImplTest extends AbstractContextTest { 29 class DartChangeBuilderImplTest extends AbstractContextTest {
30 void test_createFileEditBuilder() { 30 test_createFileEditBuilder() async {
31 Source source = addSource('/test.dart', 'library test;'); 31 Source source = addSource('/test.dart', 'library test;');
32 resolveLibraryUnit(source); 32 await resolveLibraryUnit(source);
33 int timeStamp = 54; 33 int timeStamp = 54;
34 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 34 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
35 DartFileEditBuilderImpl fileEditBuilder = 35 DartFileEditBuilderImpl fileEditBuilder =
36 builder.createFileEditBuilder(source, timeStamp); 36 builder.createFileEditBuilder(source, timeStamp);
37 expect(fileEditBuilder, new isInstanceOf<DartFileEditBuilder>()); 37 expect(fileEditBuilder, new isInstanceOf<DartFileEditBuilder>());
38 SourceFileEdit fileEdit = fileEditBuilder.fileEdit; 38 SourceFileEdit fileEdit = fileEditBuilder.fileEdit;
39 expect(fileEdit.file, source.fullName); 39 expect(fileEdit.file, source.fullName);
40 expect(fileEdit.fileStamp, timeStamp); 40 expect(fileEdit.fileStamp, timeStamp);
41 } 41 }
42 } 42 }
43 43
44 @reflectiveTest 44 @reflectiveTest
45 class DartEditBuilderImplTest extends AbstractContextTest { 45 class DartEditBuilderImplTest extends AbstractContextTest {
46 SourceEdit getEdit(DartChangeBuilderImpl builder) { 46 SourceEdit getEdit(DartChangeBuilderImpl builder) {
47 SourceChange sourceChange = builder.sourceChange; 47 SourceChange sourceChange = builder.sourceChange;
48 expect(sourceChange, isNotNull); 48 expect(sourceChange, isNotNull);
49 List<SourceFileEdit> fileEdits = sourceChange.edits; 49 List<SourceFileEdit> fileEdits = sourceChange.edits;
50 expect(fileEdits, hasLength(1)); 50 expect(fileEdits, hasLength(1));
51 SourceFileEdit fileEdit = fileEdits[0]; 51 SourceFileEdit fileEdit = fileEdits[0];
52 expect(fileEdit, isNotNull); 52 expect(fileEdit, isNotNull);
53 List<SourceEdit> edits = fileEdit.edits; 53 List<SourceEdit> edits = fileEdit.edits;
54 expect(edits, hasLength(1)); 54 expect(edits, hasLength(1));
55 return edits[0]; 55 return edits[0];
56 } 56 }
57 57
58 void test_writeClassDeclaration_interfaces() { 58 test_writeClassDeclaration_interfaces() async {
59 Source source = addSource('/test.dart', 'class A {}'); 59 Source source = addSource('/test.dart', 'class A {}');
60 CompilationUnit unit = resolveLibraryUnit(source); 60 CompilationUnit unit = await resolveLibraryUnit(source);
61 ClassDeclaration declaration = unit.declarations[0]; 61 ClassDeclaration declaration = unit.declarations[0];
62 62
63 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 63 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
64 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 64 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
65 builder.addInsertion(0, (EditBuilder builder) { 65 builder.addInsertion(0, (EditBuilder builder) {
66 (builder as DartEditBuilder).writeClassDeclaration('C', interfaces: [ 66 (builder as DartEditBuilder).writeClassDeclaration('C', interfaces: [
67 resolutionMap.elementDeclaredByClassDeclaration(declaration).type 67 resolutionMap.elementDeclaredByClassDeclaration(declaration).type
68 ]); 68 ]);
69 }); 69 });
70 }); 70 });
71 SourceEdit edit = getEdit(builder); 71 SourceEdit edit = getEdit(builder);
72 expect( 72 expect(
73 edit.replacement, equalsIgnoringWhitespace('class C implements A { }')); 73 edit.replacement, equalsIgnoringWhitespace('class C implements A { }'));
74 } 74 }
75 75
76 void test_writeClassDeclaration_isAbstract() { 76 test_writeClassDeclaration_isAbstract() async {
77 Source source = addSource('/test.dart', ''); 77 Source source = addSource('/test.dart', '');
78 resolveLibraryUnit(source); 78 await resolveLibraryUnit(source);
79 79
80 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 80 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
81 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 81 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
82 builder.addInsertion(0, (EditBuilder builder) { 82 builder.addInsertion(0, (EditBuilder builder) {
83 (builder as DartEditBuilder) 83 (builder as DartEditBuilder)
84 .writeClassDeclaration('C', isAbstract: true); 84 .writeClassDeclaration('C', isAbstract: true);
85 }); 85 });
86 }); 86 });
87 SourceEdit edit = getEdit(builder); 87 SourceEdit edit = getEdit(builder);
88 expect(edit.replacement, equalsIgnoringWhitespace('abstract class C { }')); 88 expect(edit.replacement, equalsIgnoringWhitespace('abstract class C { }'));
89 } 89 }
90 90
91 void test_writeClassDeclaration_memberWriter() { 91 test_writeClassDeclaration_memberWriter() async {
92 Source source = addSource('/test.dart', ''); 92 Source source = addSource('/test.dart', '');
93 resolveLibraryUnit(source); 93 await resolveLibraryUnit(source);
94 94
95 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 95 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
96 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 96 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
97 builder.addInsertion(0, (EditBuilder builder) { 97 builder.addInsertion(0, (EditBuilder builder) {
98 (builder as DartEditBuilder).writeClassDeclaration('C', 98 (builder as DartEditBuilder).writeClassDeclaration('C',
99 memberWriter: () { 99 memberWriter: () {
100 builder.write('/**/'); 100 builder.write('/**/');
101 }); 101 });
102 }); 102 });
103 }); 103 });
104 SourceEdit edit = getEdit(builder); 104 SourceEdit edit = getEdit(builder);
105 expect(edit.replacement, equalsIgnoringWhitespace('class C { /**/ }')); 105 expect(edit.replacement, equalsIgnoringWhitespace('class C { /**/ }'));
106 } 106 }
107 107
108 void test_writeClassDeclaration_mixins_noSuperclass() { 108 test_writeClassDeclaration_mixins_noSuperclass() async {
109 Source source = addSource('/test.dart', 'class A {}'); 109 Source source = addSource('/test.dart', 'class A {}');
110 CompilationUnit unit = resolveLibraryUnit(source); 110 CompilationUnit unit = await resolveLibraryUnit(source);
111 ClassDeclaration classA = unit.declarations[0]; 111 ClassDeclaration classA = unit.declarations[0];
112 112
113 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 113 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
114 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 114 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
115 builder.addInsertion(0, (EditBuilder builder) { 115 builder.addInsertion(0, (EditBuilder builder) {
116 (builder as DartEditBuilder).writeClassDeclaration('C', mixins: [ 116 (builder as DartEditBuilder).writeClassDeclaration('C', mixins: [
117 resolutionMap.elementDeclaredByClassDeclaration(classA).type 117 resolutionMap.elementDeclaredByClassDeclaration(classA).type
118 ]); 118 ]);
119 }); 119 });
120 }); 120 });
121 SourceEdit edit = getEdit(builder); 121 SourceEdit edit = getEdit(builder);
122 expect(edit.replacement, 122 expect(edit.replacement,
123 equalsIgnoringWhitespace('class C extends Object with A { }')); 123 equalsIgnoringWhitespace('class C extends Object with A { }'));
124 } 124 }
125 125
126 void test_writeClassDeclaration_mixins_superclass() { 126 test_writeClassDeclaration_mixins_superclass() async {
127 Source source = addSource('/test.dart', 'class A {} class B {}'); 127 Source source = addSource('/test.dart', 'class A {} class B {}');
128 CompilationUnit unit = resolveLibraryUnit(source); 128 CompilationUnit unit = await resolveLibraryUnit(source);
129 ClassDeclaration classA = unit.declarations[0]; 129 ClassDeclaration classA = unit.declarations[0];
130 ClassDeclaration classB = unit.declarations[1]; 130 ClassDeclaration classB = unit.declarations[1];
131 131
132 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 132 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
133 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 133 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
134 builder.addInsertion(0, (EditBuilder builder) { 134 builder.addInsertion(0, (EditBuilder builder) {
135 (builder as DartEditBuilder).writeClassDeclaration('C', 135 (builder as DartEditBuilder).writeClassDeclaration('C',
136 mixins: [ 136 mixins: [
137 resolutionMap.elementDeclaredByClassDeclaration(classB).type 137 resolutionMap.elementDeclaredByClassDeclaration(classB).type
138 ], 138 ],
139 superclass: 139 superclass:
140 resolutionMap.elementDeclaredByClassDeclaration(classA).type); 140 resolutionMap.elementDeclaredByClassDeclaration(classA).type);
141 }); 141 });
142 }); 142 });
143 SourceEdit edit = getEdit(builder); 143 SourceEdit edit = getEdit(builder);
144 expect(edit.replacement, 144 expect(edit.replacement,
145 equalsIgnoringWhitespace('class C extends A with B { }')); 145 equalsIgnoringWhitespace('class C extends A with B { }'));
146 } 146 }
147 147
148 void test_writeClassDeclaration_nameGroupName() { 148 test_writeClassDeclaration_nameGroupName() async {
149 Source source = addSource('/test.dart', ''); 149 Source source = addSource('/test.dart', '');
150 resolveLibraryUnit(source); 150 await resolveLibraryUnit(source);
151 151
152 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 152 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
153 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 153 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
154 builder.addInsertion(0, (EditBuilder builder) { 154 builder.addInsertion(0, (EditBuilder builder) {
155 (builder as DartEditBuilder) 155 (builder as DartEditBuilder)
156 .writeClassDeclaration('C', nameGroupName: 'name'); 156 .writeClassDeclaration('C', nameGroupName: 'name');
157 }); 157 });
158 }); 158 });
159 SourceEdit edit = getEdit(builder); 159 SourceEdit edit = getEdit(builder);
160 expect(edit.replacement, equalsIgnoringWhitespace('class C { }')); 160 expect(edit.replacement, equalsIgnoringWhitespace('class C { }'));
161 161
162 List<LinkedEditGroup> linkedEditGroups = 162 List<LinkedEditGroup> linkedEditGroups =
163 builder.sourceChange.linkedEditGroups; 163 builder.sourceChange.linkedEditGroups;
164 expect(linkedEditGroups, hasLength(1)); 164 expect(linkedEditGroups, hasLength(1));
165 LinkedEditGroup group = linkedEditGroups[0]; 165 LinkedEditGroup group = linkedEditGroups[0];
166 expect(group.length, 1); 166 expect(group.length, 1);
167 expect(group.positions, hasLength(1)); 167 expect(group.positions, hasLength(1));
168 } 168 }
169 169
170 void test_writeClassDeclaration_superclass() { 170 test_writeClassDeclaration_superclass() async {
171 Source source = addSource('/test.dart', 'class B {}'); 171 Source source = addSource('/test.dart', 'class B {}');
172 CompilationUnit unit = resolveLibraryUnit(source); 172 CompilationUnit unit = await resolveLibraryUnit(source);
173 ClassDeclaration declaration = unit.declarations[0]; 173 ClassDeclaration declaration = unit.declarations[0];
174 174
175 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 175 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
176 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 176 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
177 builder.addInsertion(0, (EditBuilder builder) { 177 builder.addInsertion(0, (EditBuilder builder) {
178 (builder as DartEditBuilder).writeClassDeclaration('C', 178 (builder as DartEditBuilder).writeClassDeclaration('C',
179 superclass: resolutionMap 179 superclass: resolutionMap
180 .elementDeclaredByClassDeclaration(declaration) 180 .elementDeclaredByClassDeclaration(declaration)
181 .type); 181 .type);
182 }); 182 });
183 }); 183 });
184 SourceEdit edit = getEdit(builder); 184 SourceEdit edit = getEdit(builder);
185 expect(edit.replacement, equalsIgnoringWhitespace('class C extends B { }')); 185 expect(edit.replacement, equalsIgnoringWhitespace('class C extends B { }'));
186 } 186 }
187 187
188 void test_writeFieldDeclaration_initializerWriter() { 188 test_writeFieldDeclaration_initializerWriter() async {
189 String content = 'class A {}'; 189 String content = 'class A {}';
190 Source source = addSource('/test.dart', content); 190 Source source = addSource('/test.dart', content);
191 resolveLibraryUnit(source); 191 await resolveLibraryUnit(source);
192 192
193 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 193 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
194 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 194 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
195 builder.addInsertion(content.length - 1, (EditBuilder builder) { 195 builder.addInsertion(content.length - 1, (EditBuilder builder) {
196 (builder as DartEditBuilder).writeFieldDeclaration('f', 196 (builder as DartEditBuilder).writeFieldDeclaration('f',
197 initializerWriter: () { 197 initializerWriter: () {
198 builder.write('e'); 198 builder.write('e');
199 }); 199 });
200 }); 200 });
201 }); 201 });
202 SourceEdit edit = getEdit(builder); 202 SourceEdit edit = getEdit(builder);
203 expect(edit.replacement, equalsIgnoringWhitespace('var f = e;')); 203 expect(edit.replacement, equalsIgnoringWhitespace('var f = e;'));
204 } 204 }
205 205
206 void test_writeFieldDeclaration_isConst() { 206 test_writeFieldDeclaration_isConst() async {
207 String content = 'class A {}'; 207 String content = 'class A {}';
208 Source source = addSource('/test.dart', content); 208 Source source = addSource('/test.dart', content);
209 resolveLibraryUnit(source); 209 await resolveLibraryUnit(source);
210 210
211 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 211 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
212 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 212 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
213 builder.addInsertion(content.length - 1, (EditBuilder builder) { 213 builder.addInsertion(content.length - 1, (EditBuilder builder) {
214 (builder as DartEditBuilder).writeFieldDeclaration('f', isConst: true); 214 (builder as DartEditBuilder).writeFieldDeclaration('f', isConst: true);
215 }); 215 });
216 }); 216 });
217 SourceEdit edit = getEdit(builder); 217 SourceEdit edit = getEdit(builder);
218 expect(edit.replacement, equalsIgnoringWhitespace('const f;')); 218 expect(edit.replacement, equalsIgnoringWhitespace('const f;'));
219 } 219 }
220 220
221 void test_writeFieldDeclaration_isConst_isFinal() { 221 test_writeFieldDeclaration_isConst_isFinal() async {
222 String content = 'class A {}'; 222 String content = 'class A {}';
223 Source source = addSource('/test.dart', content); 223 Source source = addSource('/test.dart', content);
224 resolveLibraryUnit(source); 224 await resolveLibraryUnit(source);
225 225
226 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 226 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
227 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 227 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
228 builder.addInsertion(content.length - 1, (EditBuilder builder) { 228 builder.addInsertion(content.length - 1, (EditBuilder builder) {
229 (builder as DartEditBuilder) 229 (builder as DartEditBuilder)
230 .writeFieldDeclaration('f', isConst: true, isFinal: true); 230 .writeFieldDeclaration('f', isConst: true, isFinal: true);
231 }); 231 });
232 }); 232 });
233 SourceEdit edit = getEdit(builder); 233 SourceEdit edit = getEdit(builder);
234 expect(edit.replacement, equalsIgnoringWhitespace('const f;')); 234 expect(edit.replacement, equalsIgnoringWhitespace('const f;'));
235 } 235 }
236 236
237 void test_writeFieldDeclaration_isFinal() { 237 test_writeFieldDeclaration_isFinal() async {
238 String content = 'class A {}'; 238 String content = 'class A {}';
239 Source source = addSource('/test.dart', content); 239 Source source = addSource('/test.dart', content);
240 resolveLibraryUnit(source); 240 await resolveLibraryUnit(source);
241 241
242 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 242 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
243 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 243 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
244 builder.addInsertion(content.length - 1, (EditBuilder builder) { 244 builder.addInsertion(content.length - 1, (EditBuilder builder) {
245 (builder as DartEditBuilder).writeFieldDeclaration('f', isFinal: true); 245 (builder as DartEditBuilder).writeFieldDeclaration('f', isFinal: true);
246 }); 246 });
247 }); 247 });
248 SourceEdit edit = getEdit(builder); 248 SourceEdit edit = getEdit(builder);
249 expect(edit.replacement, equalsIgnoringWhitespace('final f;')); 249 expect(edit.replacement, equalsIgnoringWhitespace('final f;'));
250 } 250 }
251 251
252 void test_writeFieldDeclaration_isStatic() { 252 test_writeFieldDeclaration_isStatic() async {
253 String content = 'class A {}'; 253 String content = 'class A {}';
254 Source source = addSource('/test.dart', content); 254 Source source = addSource('/test.dart', content);
255 resolveLibraryUnit(source); 255 await resolveLibraryUnit(source);
256 256
257 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 257 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
258 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 258 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
259 builder.addInsertion(content.length - 1, (EditBuilder builder) { 259 builder.addInsertion(content.length - 1, (EditBuilder builder) {
260 (builder as DartEditBuilder).writeFieldDeclaration('f', isStatic: true); 260 (builder as DartEditBuilder).writeFieldDeclaration('f', isStatic: true);
261 }); 261 });
262 }); 262 });
263 SourceEdit edit = getEdit(builder); 263 SourceEdit edit = getEdit(builder);
264 expect(edit.replacement, equalsIgnoringWhitespace('static var f;')); 264 expect(edit.replacement, equalsIgnoringWhitespace('static var f;'));
265 } 265 }
266 266
267 void test_writeFieldDeclaration_nameGroupName() { 267 test_writeFieldDeclaration_nameGroupName() async {
268 String content = 'class A {}'; 268 String content = 'class A {}';
269 Source source = addSource('/test.dart', content); 269 Source source = addSource('/test.dart', content);
270 resolveLibraryUnit(source); 270 await resolveLibraryUnit(source);
271 271
272 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 272 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
273 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 273 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
274 builder.addInsertion(content.length - 1, (EditBuilder builder) { 274 builder.addInsertion(content.length - 1, (EditBuilder builder) {
275 (builder as DartEditBuilder) 275 (builder as DartEditBuilder)
276 .writeFieldDeclaration('f', nameGroupName: 'name'); 276 .writeFieldDeclaration('f', nameGroupName: 'name');
277 }); 277 });
278 }); 278 });
279 SourceEdit edit = getEdit(builder); 279 SourceEdit edit = getEdit(builder);
280 expect(edit.replacement, equalsIgnoringWhitespace('var f;')); 280 expect(edit.replacement, equalsIgnoringWhitespace('var f;'));
281 281
282 List<LinkedEditGroup> linkedEditGroups = 282 List<LinkedEditGroup> linkedEditGroups =
283 builder.sourceChange.linkedEditGroups; 283 builder.sourceChange.linkedEditGroups;
284 expect(linkedEditGroups, hasLength(1)); 284 expect(linkedEditGroups, hasLength(1));
285 LinkedEditGroup group = linkedEditGroups[0]; 285 LinkedEditGroup group = linkedEditGroups[0];
286 expect(group.length, 1); 286 expect(group.length, 1);
287 expect(group.positions, hasLength(1)); 287 expect(group.positions, hasLength(1));
288 Position position = group.positions[0]; 288 Position position = group.positions[0];
289 expect(position.offset, equals(13)); 289 expect(position.offset, equals(13));
290 } 290 }
291 291
292 void test_writeFieldDeclaration_type_typeGroupName() { 292 test_writeFieldDeclaration_type_typeGroupName() async {
293 String content = 'class A {} class B {}'; 293 String content = 'class A {} class B {}';
294 Source source = addSource('/test.dart', content); 294 Source source = addSource('/test.dart', content);
295 CompilationUnit unit = resolveLibraryUnit(source); 295 CompilationUnit unit = await resolveLibraryUnit(source);
296 ClassDeclaration declaration = unit.declarations[0]; 296 ClassDeclaration declaration = unit.declarations[0];
297 297
298 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 298 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
299 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 299 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
300 builder.addInsertion(content.length - 1, (EditBuilder builder) { 300 builder.addInsertion(content.length - 1, (EditBuilder builder) {
301 (builder as DartEditBuilder).writeFieldDeclaration('f', 301 (builder as DartEditBuilder).writeFieldDeclaration('f',
302 type: resolutionMap 302 type: resolutionMap
303 .elementDeclaredByClassDeclaration(declaration) 303 .elementDeclaredByClassDeclaration(declaration)
304 .type, 304 .type,
305 typeGroupName: 'type'); 305 typeGroupName: 'type');
306 }); 306 });
307 }); 307 });
308 SourceEdit edit = getEdit(builder); 308 SourceEdit edit = getEdit(builder);
309 expect(edit.replacement, equalsIgnoringWhitespace('A f;')); 309 expect(edit.replacement, equalsIgnoringWhitespace('A f;'));
310 310
311 List<LinkedEditGroup> linkedEditGroups = 311 List<LinkedEditGroup> linkedEditGroups =
312 builder.sourceChange.linkedEditGroups; 312 builder.sourceChange.linkedEditGroups;
313 expect(linkedEditGroups, hasLength(1)); 313 expect(linkedEditGroups, hasLength(1));
314 LinkedEditGroup group = linkedEditGroups[0]; 314 LinkedEditGroup group = linkedEditGroups[0];
315 expect(group.length, 1); 315 expect(group.length, 1);
316 expect(group.positions, hasLength(1)); 316 expect(group.positions, hasLength(1));
317 Position position = group.positions[0]; 317 Position position = group.positions[0];
318 expect(position.offset, equals(20)); 318 expect(position.offset, equals(20));
319 } 319 }
320 320
321 void test_writeGetterDeclaration_bodyWriter() { 321 test_writeGetterDeclaration_bodyWriter() async {
322 String content = 'class A {}'; 322 String content = 'class A {}';
323 Source source = addSource('/test.dart', content); 323 Source source = addSource('/test.dart', content);
324 resolveLibraryUnit(source); 324 await resolveLibraryUnit(source);
325 325
326 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 326 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
327 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 327 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
328 builder.addInsertion(content.length - 1, (EditBuilder builder) { 328 builder.addInsertion(content.length - 1, (EditBuilder builder) {
329 (builder as DartEditBuilder).writeGetterDeclaration('g', 329 (builder as DartEditBuilder).writeGetterDeclaration('g',
330 bodyWriter: () { 330 bodyWriter: () {
331 builder.write('{}'); 331 builder.write('{}');
332 }); 332 });
333 }); 333 });
334 }); 334 });
335 SourceEdit edit = getEdit(builder); 335 SourceEdit edit = getEdit(builder);
336 expect(edit.replacement, equalsIgnoringWhitespace('get g {}')); 336 expect(edit.replacement, equalsIgnoringWhitespace('get g {}'));
337 } 337 }
338 338
339 void test_writeGetterDeclaration_isStatic() { 339 test_writeGetterDeclaration_isStatic() async {
340 String content = 'class A {}'; 340 String content = 'class A {}';
341 Source source = addSource('/test.dart', content); 341 Source source = addSource('/test.dart', content);
342 resolveLibraryUnit(source); 342 await resolveLibraryUnit(source);
343 343
344 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 344 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
345 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 345 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
346 builder.addInsertion(content.length - 1, (EditBuilder builder) { 346 builder.addInsertion(content.length - 1, (EditBuilder builder) {
347 (builder as DartEditBuilder) 347 (builder as DartEditBuilder)
348 .writeGetterDeclaration('g', isStatic: true); 348 .writeGetterDeclaration('g', isStatic: true);
349 }); 349 });
350 }); 350 });
351 SourceEdit edit = getEdit(builder); 351 SourceEdit edit = getEdit(builder);
352 expect(edit.replacement, equalsIgnoringWhitespace('static get g => null;')); 352 expect(edit.replacement, equalsIgnoringWhitespace('static get g => null;'));
353 } 353 }
354 354
355 void test_writeGetterDeclaration_nameGroupName() { 355 test_writeGetterDeclaration_nameGroupName() async {
356 String content = 'class A {}'; 356 String content = 'class A {}';
357 Source source = addSource('/test.dart', content); 357 Source source = addSource('/test.dart', content);
358 resolveLibraryUnit(source); 358 await resolveLibraryUnit(source);
359 359
360 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 360 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
361 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 361 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
362 builder.addInsertion(content.length - 1, (EditBuilder builder) { 362 builder.addInsertion(content.length - 1, (EditBuilder builder) {
363 (builder as DartEditBuilder) 363 (builder as DartEditBuilder)
364 .writeGetterDeclaration('g', nameGroupName: 'name'); 364 .writeGetterDeclaration('g', nameGroupName: 'name');
365 }); 365 });
366 }); 366 });
367 SourceEdit edit = getEdit(builder); 367 SourceEdit edit = getEdit(builder);
368 expect(edit.replacement, equalsIgnoringWhitespace('get g => null;')); 368 expect(edit.replacement, equalsIgnoringWhitespace('get g => null;'));
369 369
370 List<LinkedEditGroup> linkedEditGroups = 370 List<LinkedEditGroup> linkedEditGroups =
371 builder.sourceChange.linkedEditGroups; 371 builder.sourceChange.linkedEditGroups;
372 expect(linkedEditGroups, hasLength(1)); 372 expect(linkedEditGroups, hasLength(1));
373 LinkedEditGroup group = linkedEditGroups[0]; 373 LinkedEditGroup group = linkedEditGroups[0];
374 expect(group.length, 1); 374 expect(group.length, 1);
375 expect(group.positions, hasLength(1)); 375 expect(group.positions, hasLength(1));
376 Position position = group.positions[0]; 376 Position position = group.positions[0];
377 expect(position.offset, equals(13)); 377 expect(position.offset, equals(13));
378 } 378 }
379 379
380 void test_writeGetterDeclaration_returnType() { 380 test_writeGetterDeclaration_returnType() async {
381 String content = 'class A {} class B {}'; 381 String content = 'class A {} class B {}';
382 Source source = addSource('/test.dart', content); 382 Source source = addSource('/test.dart', content);
383 CompilationUnit unit = resolveLibraryUnit(source); 383 CompilationUnit unit = await resolveLibraryUnit(source);
384 ClassDeclaration classA = unit.declarations[0]; 384 ClassDeclaration classA = unit.declarations[0];
385 385
386 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 386 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
387 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 387 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
388 builder.addInsertion(content.length - 1, (EditBuilder builder) { 388 builder.addInsertion(content.length - 1, (EditBuilder builder) {
389 (builder as DartEditBuilder).writeGetterDeclaration('g', 389 (builder as DartEditBuilder).writeGetterDeclaration('g',
390 returnType: 390 returnType:
391 resolutionMap.elementDeclaredByClassDeclaration(classA).type, 391 resolutionMap.elementDeclaredByClassDeclaration(classA).type,
392 returnTypeGroupName: 'returnType'); 392 returnTypeGroupName: 'returnType');
393 }); 393 });
394 }); 394 });
395 SourceEdit edit = getEdit(builder); 395 SourceEdit edit = getEdit(builder);
396 expect(edit.replacement, equalsIgnoringWhitespace('A get g => null;')); 396 expect(edit.replacement, equalsIgnoringWhitespace('A get g => null;'));
397 397
398 List<LinkedEditGroup> linkedEditGroups = 398 List<LinkedEditGroup> linkedEditGroups =
399 builder.sourceChange.linkedEditGroups; 399 builder.sourceChange.linkedEditGroups;
400 expect(linkedEditGroups, hasLength(1)); 400 expect(linkedEditGroups, hasLength(1));
401 LinkedEditGroup group = linkedEditGroups[0]; 401 LinkedEditGroup group = linkedEditGroups[0];
402 expect(group.length, 1); 402 expect(group.length, 1);
403 expect(group.positions, hasLength(1)); 403 expect(group.positions, hasLength(1));
404 Position position = group.positions[0]; 404 Position position = group.positions[0];
405 expect(position.offset, equals(20)); 405 expect(position.offset, equals(20));
406 } 406 }
407 407
408 void test_writeOverrideOfInheritedMember() { 408 test_writeOverrideOfInheritedMember() async {
409 String content = ''' 409 String content = '''
410 class A { 410 class A {
411 A add(A a) => null; 411 A add(A a) => null;
412 } 412 }
413 class B extends A { 413 class B extends A {
414 }'''; 414 }''';
415 Source source = addSource('/test.dart', content); 415 Source source = addSource('/test.dart', content);
416 CompilationUnit unit = resolveLibraryUnit(source); 416 CompilationUnit unit = await resolveLibraryUnit(source);
417 ClassDeclaration declaration = unit.declarations[0]; 417 ClassDeclaration declaration = unit.declarations[0];
418 418
419 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 419 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
420 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 420 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
421 builder.addInsertion(content.length - 1, (EditBuilder builder) { 421 builder.addInsertion(content.length - 1, (EditBuilder builder) {
422 (builder as DartEditBuilder).writeOverrideOfInheritedMember( 422 (builder as DartEditBuilder).writeOverrideOfInheritedMember(
423 resolutionMap 423 resolutionMap
424 .elementDeclaredByClassDeclaration(declaration) 424 .elementDeclaredByClassDeclaration(declaration)
425 .methods[0]); 425 .methods[0]);
426 }); 426 });
427 }); 427 });
428 SourceEdit edit = getEdit(builder); 428 SourceEdit edit = getEdit(builder);
429 expect(edit.replacement, equalsIgnoringWhitespace(''' 429 expect(edit.replacement, equalsIgnoringWhitespace('''
430 @override 430 @override
431 A add(A a) { 431 A add(A a) {
432 // TODO: implement add 432 // TODO: implement add
433 return null; 433 return null;
434 }''')); 434 }'''));
435 } 435 }
436 436
437 void test_writeParameters_named() { 437 test_writeParameters_named() async {
438 String content = 'f(int i, {String s}) {}'; 438 String content = 'f(int i, {String s}) {}';
439 Source source = addSource('/test.dart', content); 439 Source source = addSource('/test.dart', content);
440 CompilationUnit unit = resolveLibraryUnit(source); 440 CompilationUnit unit = await resolveLibraryUnit(source);
441 FunctionDeclaration f = unit.declarations[0]; 441 FunctionDeclaration f = unit.declarations[0];
442 FormalParameterList parameters = f.functionExpression.parameters; 442 FormalParameterList parameters = f.functionExpression.parameters;
443 Iterable<ParameterElement> elements = parameters.parameters 443 Iterable<ParameterElement> elements = parameters.parameters
444 .map(resolutionMap.elementDeclaredByFormalParameter); 444 .map(resolutionMap.elementDeclaredByFormalParameter);
445 445
446 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 446 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
447 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 447 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
448 builder.addInsertion(content.length - 1, (EditBuilder builder) { 448 builder.addInsertion(content.length - 1, (EditBuilder builder) {
449 (builder as DartEditBuilder).writeParameters(elements); 449 (builder as DartEditBuilder).writeParameters(elements);
450 }); 450 });
451 }); 451 });
452 SourceEdit edit = getEdit(builder); 452 SourceEdit edit = getEdit(builder);
453 expect(edit.replacement, equalsIgnoringWhitespace('(int i, {String s})')); 453 expect(edit.replacement, equalsIgnoringWhitespace('(int i, {String s})'));
454 } 454 }
455 455
456 void test_writeParameters_positional() { 456 test_writeParameters_positional() async {
457 String content = 'f(int i, [String s]) {}'; 457 String content = 'f(int i, [String s]) {}';
458 Source source = addSource('/test.dart', content); 458 Source source = addSource('/test.dart', content);
459 CompilationUnit unit = resolveLibraryUnit(source); 459 CompilationUnit unit = await resolveLibraryUnit(source);
460 FunctionDeclaration f = unit.declarations[0]; 460 FunctionDeclaration f = unit.declarations[0];
461 FormalParameterList parameters = f.functionExpression.parameters; 461 FormalParameterList parameters = f.functionExpression.parameters;
462 Iterable<ParameterElement> elements = parameters.parameters 462 Iterable<ParameterElement> elements = parameters.parameters
463 .map(resolutionMap.elementDeclaredByFormalParameter); 463 .map(resolutionMap.elementDeclaredByFormalParameter);
464 464
465 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 465 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
466 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 466 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
467 builder.addInsertion(content.length - 1, (EditBuilder builder) { 467 builder.addInsertion(content.length - 1, (EditBuilder builder) {
468 (builder as DartEditBuilder).writeParameters(elements); 468 (builder as DartEditBuilder).writeParameters(elements);
469 }); 469 });
470 }); 470 });
471 SourceEdit edit = getEdit(builder); 471 SourceEdit edit = getEdit(builder);
472 expect(edit.replacement, equalsIgnoringWhitespace('(int i, [String s])')); 472 expect(edit.replacement, equalsIgnoringWhitespace('(int i, [String s])'));
473 } 473 }
474 474
475 void test_writeParameters_required() { 475 test_writeParameters_required() async {
476 String content = 'f(int i, String s) {}'; 476 String content = 'f(int i, String s) {}';
477 Source source = addSource('/test.dart', content); 477 Source source = addSource('/test.dart', content);
478 CompilationUnit unit = resolveLibraryUnit(source); 478 CompilationUnit unit = await resolveLibraryUnit(source);
479 FunctionDeclaration f = unit.declarations[0]; 479 FunctionDeclaration f = unit.declarations[0];
480 FormalParameterList parameters = f.functionExpression.parameters; 480 FormalParameterList parameters = f.functionExpression.parameters;
481 Iterable<ParameterElement> elements = parameters.parameters 481 Iterable<ParameterElement> elements = parameters.parameters
482 .map(resolutionMap.elementDeclaredByFormalParameter); 482 .map(resolutionMap.elementDeclaredByFormalParameter);
483 483
484 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 484 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
485 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 485 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
486 builder.addInsertion(content.length - 1, (EditBuilder builder) { 486 builder.addInsertion(content.length - 1, (EditBuilder builder) {
487 (builder as DartEditBuilder).writeParameters(elements); 487 (builder as DartEditBuilder).writeParameters(elements);
488 }); 488 });
489 }); 489 });
490 SourceEdit edit = getEdit(builder); 490 SourceEdit edit = getEdit(builder);
491 expect(edit.replacement, equalsIgnoringWhitespace('(int i, String s)')); 491 expect(edit.replacement, equalsIgnoringWhitespace('(int i, String s)'));
492 } 492 }
493 493
494 void test_writeParametersMatchingArguments_named() { 494 test_writeParametersMatchingArguments_named() async {
495 String content = ''' 495 String content = '''
496 f(int i, String s) { 496 f(int i, String s) {
497 g(s, index: i); 497 g(s, index: i);
498 }'''; 498 }''';
499 Source source = addSource('/test.dart', content); 499 Source source = addSource('/test.dart', content);
500 CompilationUnit unit = resolveLibraryUnit(source); 500 CompilationUnit unit = await resolveLibraryUnit(source);
501 FunctionDeclaration f = unit.declarations[0]; 501 FunctionDeclaration f = unit.declarations[0];
502 BlockFunctionBody body = f.functionExpression.body; 502 BlockFunctionBody body = f.functionExpression.body;
503 ExpressionStatement statement = body.block.statements[0]; 503 ExpressionStatement statement = body.block.statements[0];
504 MethodInvocation invocation = statement.expression; 504 MethodInvocation invocation = statement.expression;
505 505
506 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 506 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
507 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 507 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
508 builder.addInsertion(content.length - 1, (EditBuilder builder) { 508 builder.addInsertion(content.length - 1, (EditBuilder builder) {
509 (builder as DartEditBuilder) 509 (builder as DartEditBuilder)
510 .writeParametersMatchingArguments(invocation.argumentList); 510 .writeParametersMatchingArguments(invocation.argumentList);
511 }); 511 });
512 }); 512 });
513 SourceEdit edit = getEdit(builder); 513 SourceEdit edit = getEdit(builder);
514 expect( 514 expect(
515 edit.replacement, equalsIgnoringWhitespace('(String s, [int index])')); 515 edit.replacement, equalsIgnoringWhitespace('(String s, [int index])'));
516 } 516 }
517 517
518 void test_writeParametersMatchingArguments_required() { 518 test_writeParametersMatchingArguments_required() async {
519 String content = ''' 519 String content = '''
520 f(int i, String s) { 520 f(int i, String s) {
521 g(s, i); 521 g(s, i);
522 }'''; 522 }''';
523 Source source = addSource('/test.dart', content); 523 Source source = addSource('/test.dart', content);
524 CompilationUnit unit = resolveLibraryUnit(source); 524 CompilationUnit unit = await resolveLibraryUnit(source);
525 FunctionDeclaration f = unit.declarations[0]; 525 FunctionDeclaration f = unit.declarations[0];
526 BlockFunctionBody body = f.functionExpression.body; 526 BlockFunctionBody body = f.functionExpression.body;
527 ExpressionStatement statement = body.block.statements[0]; 527 ExpressionStatement statement = body.block.statements[0];
528 MethodInvocation invocation = statement.expression; 528 MethodInvocation invocation = statement.expression;
529 529
530 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 530 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
531 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 531 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
532 builder.addInsertion(content.length - 1, (EditBuilder builder) { 532 builder.addInsertion(content.length - 1, (EditBuilder builder) {
533 (builder as DartEditBuilder) 533 (builder as DartEditBuilder)
534 .writeParametersMatchingArguments(invocation.argumentList); 534 .writeParametersMatchingArguments(invocation.argumentList);
535 }); 535 });
536 }); 536 });
537 SourceEdit edit = getEdit(builder); 537 SourceEdit edit = getEdit(builder);
538 expect(edit.replacement, equalsIgnoringWhitespace('(String s, int i)')); 538 expect(edit.replacement, equalsIgnoringWhitespace('(String s, int i)'));
539 } 539 }
540 540
541 void test_writeParameterSource() { 541 test_writeParameterSource() async {
542 String content = 'class A {}'; 542 String content = 'class A {}';
543 Source source = addSource('/test.dart', content); 543 Source source = addSource('/test.dart', content);
544 CompilationUnit unit = resolveLibraryUnit(source); 544 CompilationUnit unit = await resolveLibraryUnit(source);
545 ClassDeclaration classA = unit.declarations[0]; 545 ClassDeclaration classA = unit.declarations[0];
546 546
547 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 547 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
548 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 548 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
549 builder.addInsertion(content.length - 1, (EditBuilder builder) { 549 builder.addInsertion(content.length - 1, (EditBuilder builder) {
550 (builder as DartEditBuilder).writeParameterSource( 550 (builder as DartEditBuilder).writeParameterSource(
551 resolutionMap.elementDeclaredByClassDeclaration(classA).type, 'a'); 551 resolutionMap.elementDeclaredByClassDeclaration(classA).type, 'a');
552 }); 552 });
553 }); 553 });
554 SourceEdit edit = getEdit(builder); 554 SourceEdit edit = getEdit(builder);
555 expect(edit.replacement, equalsIgnoringWhitespace('A a')); 555 expect(edit.replacement, equalsIgnoringWhitespace('A a'));
556 } 556 }
557 557
558 void test_writeType_dymanic() { 558 test_writeType_dynamic() async {
559 String content = 'class A {}'; 559 String content = 'class A {}';
560 Source source = addSource('/test.dart', content); 560 Source source = addSource('/test.dart', content);
561 CompilationUnit unit = resolveLibraryUnit(source); 561 CompilationUnit unit = await resolveLibraryUnit(source);
562 562
563 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 563 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
564 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 564 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
565 builder.addInsertion(content.length - 1, (EditBuilder builder) { 565 builder.addInsertion(content.length - 1, (EditBuilder builder) {
566 (builder as DartEditBuilder).writeType(resolutionMap 566 (builder as DartEditBuilder).writeType(resolutionMap
567 .elementDeclaredByCompilationUnit(unit) 567 .elementDeclaredByCompilationUnit(unit)
568 .context 568 .context
569 .typeProvider 569 .typeProvider
570 .dynamicType); 570 .dynamicType);
571 }); 571 });
572 }); 572 });
573 SourceEdit edit = getEdit(builder); 573 SourceEdit edit = getEdit(builder);
574 expect(edit.replacement, equalsIgnoringWhitespace('')); 574 expect(edit.replacement, equalsIgnoringWhitespace(''));
575 } 575 }
576 576
577 void test_writeType_genericType() { 577 test_writeType_genericType() async {
578 String content = 'class A {} class B<E> {}'; 578 String content = 'class A {} class B<E> {}';
579 Source source = addSource('/test.dart', content); 579 Source source = addSource('/test.dart', content);
580 CompilationUnit unit = resolveLibraryUnit(source); 580 CompilationUnit unit = await resolveLibraryUnit(source);
581 ClassDeclaration classA = unit.declarations[0]; 581 ClassDeclaration classA = unit.declarations[0];
582 ClassDeclaration classB = unit.declarations[1]; 582 ClassDeclaration classB = unit.declarations[1];
583 583
584 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 584 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
585 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 585 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
586 builder.addInsertion(content.length - 1, (EditBuilder builder) { 586 builder.addInsertion(content.length - 1, (EditBuilder builder) {
587 (builder as DartEditBuilder).writeType(resolutionMap 587 (builder as DartEditBuilder).writeType(resolutionMap
588 .elementDeclaredByClassDeclaration(classB) 588 .elementDeclaredByClassDeclaration(classB)
589 .type 589 .type
590 .instantiate([ 590 .instantiate([
591 resolutionMap.elementDeclaredByClassDeclaration(classA).type 591 resolutionMap.elementDeclaredByClassDeclaration(classA).type
592 ])); 592 ]));
593 }); 593 });
594 }); 594 });
595 SourceEdit edit = getEdit(builder); 595 SourceEdit edit = getEdit(builder);
596 expect(edit.replacement, equalsIgnoringWhitespace('B<A>')); 596 expect(edit.replacement, equalsIgnoringWhitespace('B<A>'));
597 } 597 }
598 598
599 void test_writeType_groupName() { 599 test_writeType_groupName() async {
600 String content = 'class A {} class B extends A {} class C extends B {}'; 600 String content = 'class A {} class B extends A {} class C extends B {}';
601 Source source = addSource('/test.dart', content); 601 Source source = addSource('/test.dart', content);
602 CompilationUnit unit = resolveLibraryUnit(source); 602 CompilationUnit unit = await resolveLibraryUnit(source);
603 ClassDeclaration classC = unit.declarations[2]; 603 ClassDeclaration classC = unit.declarations[2];
604 604
605 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 605 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
606 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 606 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
607 builder.addInsertion(content.length - 1, (EditBuilder builder) { 607 builder.addInsertion(content.length - 1, (EditBuilder builder) {
608 (builder as DartEditBuilder).writeType( 608 (builder as DartEditBuilder).writeType(
609 resolutionMap.elementDeclaredByClassDeclaration(classC).type, 609 resolutionMap.elementDeclaredByClassDeclaration(classC).type,
610 groupName: 'type'); 610 groupName: 'type');
611 }); 611 });
612 }); 612 });
613 SourceEdit edit = getEdit(builder); 613 SourceEdit edit = getEdit(builder);
614 expect(edit.replacement, equalsIgnoringWhitespace('C')); 614 expect(edit.replacement, equalsIgnoringWhitespace('C'));
615 615
616 List<LinkedEditGroup> linkedEditGroups = 616 List<LinkedEditGroup> linkedEditGroups =
617 builder.sourceChange.linkedEditGroups; 617 builder.sourceChange.linkedEditGroups;
618 expect(linkedEditGroups, hasLength(1)); 618 expect(linkedEditGroups, hasLength(1));
619 LinkedEditGroup group = linkedEditGroups[0]; 619 LinkedEditGroup group = linkedEditGroups[0];
620 expect(group, isNotNull); 620 expect(group, isNotNull);
621 } 621 }
622 622
623 void test_writeType_groupName_addSupertypeProposals() { 623 test_writeType_groupName_addSupertypeProposals() async {
624 String content = 'class A {} class B extends A {} class C extends B {}'; 624 String content = 'class A {} class B extends A {} class C extends B {}';
625 Source source = addSource('/test.dart', content); 625 Source source = addSource('/test.dart', content);
626 CompilationUnit unit = resolveLibraryUnit(source); 626 CompilationUnit unit = await resolveLibraryUnit(source);
627 ClassDeclaration classC = unit.declarations[2]; 627 ClassDeclaration classC = unit.declarations[2];
628 628
629 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 629 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
630 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 630 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
631 builder.addInsertion(content.length - 1, (EditBuilder builder) { 631 builder.addInsertion(content.length - 1, (EditBuilder builder) {
632 (builder as DartEditBuilder).writeType( 632 (builder as DartEditBuilder).writeType(
633 resolutionMap.elementDeclaredByClassDeclaration(classC).type, 633 resolutionMap.elementDeclaredByClassDeclaration(classC).type,
634 addSupertypeProposals: true, 634 addSupertypeProposals: true,
635 groupName: 'type'); 635 groupName: 'type');
636 }); 636 });
(...skipping 11 matching lines...) Expand all
648 suggestions.map((LinkedEditSuggestion suggestion) { 648 suggestions.map((LinkedEditSuggestion suggestion) {
649 expect(suggestion.kind, LinkedEditSuggestionKind.TYPE); 649 expect(suggestion.kind, LinkedEditSuggestionKind.TYPE);
650 return suggestion.value; 650 return suggestion.value;
651 }); 651 });
652 expect(values, contains('Object')); 652 expect(values, contains('Object'));
653 expect(values, contains('A')); 653 expect(values, contains('A'));
654 expect(values, contains('B')); 654 expect(values, contains('B'));
655 expect(values, contains('C')); 655 expect(values, contains('C'));
656 } 656 }
657 657
658 void test_writeType_null() { 658 test_writeType_null() async {
659 String content = 'class A {}'; 659 String content = 'class A {}';
660 Source source = addSource('/test.dart', content); 660 Source source = addSource('/test.dart', content);
661 resolveLibraryUnit(source); 661 await resolveLibraryUnit(source);
662 662
663 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 663 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
664 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 664 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
665 builder.addInsertion(content.length - 1, (EditBuilder builder) { 665 builder.addInsertion(content.length - 1, (EditBuilder builder) {
666 (builder as DartEditBuilder).writeType(null); 666 (builder as DartEditBuilder).writeType(null);
667 }); 667 });
668 }); 668 });
669 SourceEdit edit = getEdit(builder); 669 SourceEdit edit = getEdit(builder);
670 expect(edit.replacement, equalsIgnoringWhitespace('')); 670 expect(edit.replacement, equalsIgnoringWhitespace(''));
671 } 671 }
672 672
673 void test_writeType_required_dymanic() { 673 test_writeType_required_dynamic() async {
674 String content = 'class A {}'; 674 String content = 'class A {}';
675 Source source = addSource('/test.dart', content); 675 Source source = addSource('/test.dart', content);
676 CompilationUnit unit = resolveLibraryUnit(source); 676 CompilationUnit unit = await resolveLibraryUnit(source);
677 677
678 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 678 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
679 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 679 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
680 builder.addInsertion(content.length - 1, (EditBuilder builder) { 680 builder.addInsertion(content.length - 1, (EditBuilder builder) {
681 (builder as DartEditBuilder).writeType( 681 (builder as DartEditBuilder).writeType(
682 resolutionMap 682 resolutionMap
683 .elementDeclaredByCompilationUnit(unit) 683 .elementDeclaredByCompilationUnit(unit)
684 .context 684 .context
685 .typeProvider 685 .typeProvider
686 .dynamicType, 686 .dynamicType,
687 required: true); 687 required: true);
688 }); 688 });
689 }); 689 });
690 SourceEdit edit = getEdit(builder); 690 SourceEdit edit = getEdit(builder);
691 expect(edit.replacement, equalsIgnoringWhitespace('var')); 691 expect(edit.replacement, equalsIgnoringWhitespace('var'));
692 } 692 }
693 693
694 void test_writeType_required_notNull() { 694 test_writeType_required_notNull() async {
695 String content = 'class A {}'; 695 String content = 'class A {}';
696 Source source = addSource('/test.dart', content); 696 Source source = addSource('/test.dart', content);
697 CompilationUnit unit = resolveLibraryUnit(source); 697 CompilationUnit unit = await resolveLibraryUnit(source);
698 ClassDeclaration classA = unit.declarations[0]; 698 ClassDeclaration classA = unit.declarations[0];
699 699
700 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 700 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
701 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 701 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
702 builder.addInsertion(content.length - 1, (EditBuilder builder) { 702 builder.addInsertion(content.length - 1, (EditBuilder builder) {
703 (builder as DartEditBuilder).writeType( 703 (builder as DartEditBuilder).writeType(
704 resolutionMap.elementDeclaredByClassDeclaration(classA).type, 704 resolutionMap.elementDeclaredByClassDeclaration(classA).type,
705 required: true); 705 required: true);
706 }); 706 });
707 }); 707 });
708 SourceEdit edit = getEdit(builder); 708 SourceEdit edit = getEdit(builder);
709 expect(edit.replacement, equalsIgnoringWhitespace('A')); 709 expect(edit.replacement, equalsIgnoringWhitespace('A'));
710 } 710 }
711 711
712 void test_writeType_required_null() { 712 test_writeType_required_null() async {
713 String content = 'class A {}'; 713 String content = 'class A {}';
714 Source source = addSource('/test.dart', content); 714 Source source = addSource('/test.dart', content);
715 resolveLibraryUnit(source); 715 await resolveLibraryUnit(source);
716 716
717 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 717 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
718 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 718 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
719 builder.addInsertion(content.length - 1, (EditBuilder builder) { 719 builder.addInsertion(content.length - 1, (EditBuilder builder) {
720 (builder as DartEditBuilder).writeType(null, required: true); 720 (builder as DartEditBuilder).writeType(null, required: true);
721 }); 721 });
722 }); 722 });
723 SourceEdit edit = getEdit(builder); 723 SourceEdit edit = getEdit(builder);
724 expect(edit.replacement, equalsIgnoringWhitespace('var')); 724 expect(edit.replacement, equalsIgnoringWhitespace('var'));
725 } 725 }
726 726
727 void test_writeType_simpleType() { 727 test_writeType_simpleType() async {
728 String content = 'class A {}'; 728 String content = 'class A {}';
729 Source source = addSource('/test.dart', content); 729 Source source = addSource('/test.dart', content);
730 CompilationUnit unit = resolveLibraryUnit(source); 730 CompilationUnit unit = await resolveLibraryUnit(source);
731 ClassDeclaration classA = unit.declarations[0]; 731 ClassDeclaration classA = unit.declarations[0];
732 732
733 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 733 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
734 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 734 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
735 builder.addInsertion(content.length - 1, (EditBuilder builder) { 735 builder.addInsertion(content.length - 1, (EditBuilder builder) {
736 (builder as DartEditBuilder).writeType( 736 (builder as DartEditBuilder).writeType(
737 resolutionMap.elementDeclaredByClassDeclaration(classA).type); 737 resolutionMap.elementDeclaredByClassDeclaration(classA).type);
738 }); 738 });
739 }); 739 });
740 SourceEdit edit = getEdit(builder); 740 SourceEdit edit = getEdit(builder);
741 expect(edit.replacement, equalsIgnoringWhitespace('A')); 741 expect(edit.replacement, equalsIgnoringWhitespace('A'));
742 } 742 }
743 743
744 void test_writeTypes_empty() { 744 test_writeTypes_empty() async {
745 String content = 'class A {}'; 745 String content = 'class A {}';
746 Source source = addSource('/test.dart', content); 746 Source source = addSource('/test.dart', content);
747 resolveLibraryUnit(source); 747 await resolveLibraryUnit(source);
748 748
749 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 749 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
750 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 750 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
751 builder.addInsertion(content.length - 1, (EditBuilder builder) { 751 builder.addInsertion(content.length - 1, (EditBuilder builder) {
752 (builder as DartEditBuilderImpl).writeTypes([]); 752 (builder as DartEditBuilderImpl).writeTypes([]);
753 }); 753 });
754 }); 754 });
755 SourceEdit edit = getEdit(builder); 755 SourceEdit edit = getEdit(builder);
756 expect(edit.replacement, isEmpty); 756 expect(edit.replacement, isEmpty);
757 } 757 }
758 758
759 void test_writeTypes_noPrefix() { 759 test_writeTypes_noPrefix() async {
760 String content = 'class A {} class B {}'; 760 String content = 'class A {} class B {}';
761 Source source = addSource('/test.dart', content); 761 Source source = addSource('/test.dart', content);
762 CompilationUnit unit = resolveLibraryUnit(source); 762 CompilationUnit unit = await resolveLibraryUnit(source);
763 ClassDeclaration classA = unit.declarations[0]; 763 ClassDeclaration classA = unit.declarations[0];
764 ClassDeclaration classB = unit.declarations[1]; 764 ClassDeclaration classB = unit.declarations[1];
765 765
766 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 766 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
767 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 767 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
768 builder.addInsertion(content.length - 1, (EditBuilder builder) { 768 builder.addInsertion(content.length - 1, (EditBuilder builder) {
769 (builder as DartEditBuilderImpl).writeTypes([ 769 (builder as DartEditBuilderImpl).writeTypes([
770 resolutionMap.elementDeclaredByClassDeclaration(classA).type, 770 resolutionMap.elementDeclaredByClassDeclaration(classA).type,
771 resolutionMap.elementDeclaredByClassDeclaration(classB).type 771 resolutionMap.elementDeclaredByClassDeclaration(classB).type
772 ]); 772 ]);
773 }); 773 });
774 }); 774 });
775 SourceEdit edit = getEdit(builder); 775 SourceEdit edit = getEdit(builder);
776 expect(edit.replacement, equalsIgnoringWhitespace('A, B')); 776 expect(edit.replacement, equalsIgnoringWhitespace('A, B'));
777 } 777 }
778 778
779 void test_writeTypes_null() { 779 test_writeTypes_null() async {
780 String content = 'class A {}'; 780 String content = 'class A {}';
781 Source source = addSource('/test.dart', content); 781 Source source = addSource('/test.dart', content);
782 resolveLibraryUnit(source); 782 await resolveLibraryUnit(source);
783 783
784 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 784 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
785 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 785 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
786 builder.addInsertion(content.length - 1, (EditBuilder builder) { 786 builder.addInsertion(content.length - 1, (EditBuilder builder) {
787 (builder as DartEditBuilderImpl).writeTypes(null); 787 (builder as DartEditBuilderImpl).writeTypes(null);
788 }); 788 });
789 }); 789 });
790 SourceEdit edit = getEdit(builder); 790 SourceEdit edit = getEdit(builder);
791 expect(edit.replacement, isEmpty); 791 expect(edit.replacement, isEmpty);
792 } 792 }
793 793
794 void test_writeTypes_prefix() { 794 test_writeTypes_prefix() async {
795 String content = 'class A {} class B {}'; 795 String content = 'class A {} class B {}';
796 Source source = addSource('/test.dart', content); 796 Source source = addSource('/test.dart', content);
797 CompilationUnit unit = resolveLibraryUnit(source); 797 CompilationUnit unit = await resolveLibraryUnit(source);
798 ClassDeclaration classA = unit.declarations[0]; 798 ClassDeclaration classA = unit.declarations[0];
799 ClassDeclaration classB = unit.declarations[1]; 799 ClassDeclaration classB = unit.declarations[1];
800 800
801 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 801 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
802 builder.addFileEdit(source, 1, (FileEditBuilder builder) { 802 builder.addFileEdit(source, 1, (FileEditBuilder builder) {
803 builder.addInsertion(content.length - 1, (EditBuilder builder) { 803 builder.addInsertion(content.length - 1, (EditBuilder builder) {
804 (builder as DartEditBuilderImpl).writeTypes([ 804 (builder as DartEditBuilderImpl).writeTypes([
805 resolutionMap.elementDeclaredByClassDeclaration(classA).type, 805 resolutionMap.elementDeclaredByClassDeclaration(classA).type,
806 resolutionMap.elementDeclaredByClassDeclaration(classB).type 806 resolutionMap.elementDeclaredByClassDeclaration(classB).type
807 ], prefix: 'implements '); 807 ], prefix: 'implements ');
808 }); 808 });
809 }); 809 });
810 SourceEdit edit = getEdit(builder); 810 SourceEdit edit = getEdit(builder);
811 expect(edit.replacement, equalsIgnoringWhitespace('implements A, B')); 811 expect(edit.replacement, equalsIgnoringWhitespace('implements A, B'));
812 } 812 }
813 } 813 }
814 814
815 @reflectiveTest 815 @reflectiveTest
816 class DartFileEditBuilderImplTest extends AbstractContextTest { 816 class DartFileEditBuilderImplTest extends AbstractContextTest {
817 void test_createEditBuilder() { 817 test_createEditBuilder() async {
818 Source source = addSource('/test.dart', 'library test;'); 818 Source source = addSource('/test.dart', 'library test;');
819 resolveLibraryUnit(source); 819 await resolveLibraryUnit(source);
820 int timeStamp = 65; 820 int timeStamp = 65;
821 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); 821 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context);
822 builder.addFileEdit(source, timeStamp, (FileEditBuilder builder) { 822 builder.addFileEdit(source, timeStamp, (FileEditBuilder builder) {
823 int offset = 4; 823 int offset = 4;
824 int length = 5; 824 int length = 5;
825 DartEditBuilderImpl editBuilder = (builder as DartFileEditBuilderImpl) 825 DartEditBuilderImpl editBuilder = (builder as DartFileEditBuilderImpl)
826 .createEditBuilder(offset, length); 826 .createEditBuilder(offset, length);
827 expect(editBuilder, new isInstanceOf<DartEditBuilder>()); 827 expect(editBuilder, new isInstanceOf<DartEditBuilder>());
828 SourceEdit sourceEdit = editBuilder.sourceEdit; 828 SourceEdit sourceEdit = editBuilder.sourceEdit;
829 expect(sourceEdit.length, length); 829 expect(sourceEdit.length, length);
830 expect(sourceEdit.offset, offset); 830 expect(sourceEdit.offset, offset);
831 expect(sourceEdit.replacement, isEmpty); 831 expect(sourceEdit.replacement, isEmpty);
832 }); 832 });
833 } 833 }
834 } 834 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/test/services/search/search_engine_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698