| OLD | NEW |
| 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/src/protocol.dart'; | 7 import 'package:analysis_server/src/protocol.dart'; |
| 8 import 'package:analysis_server/src/utilities/change_builder_core.dart'; | 8 import 'package:analysis_server/src/utilities/change_builder_core.dart'; |
| 9 import 'package:analysis_server/src/utilities/change_builder_dart.dart'; | 9 import 'package:analysis_server/src/utilities/change_builder_dart.dart'; |
| 10 import 'package:analysis_server/utilities/change_builder_core.dart'; | 10 import 'package:analysis_server/utilities/change_builder_core.dart'; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 expect(sourceChange, isNotNull); | 47 expect(sourceChange, isNotNull); |
| 48 List<SourceFileEdit> fileEdits = sourceChange.edits; | 48 List<SourceFileEdit> fileEdits = sourceChange.edits; |
| 49 expect(fileEdits, hasLength(1)); | 49 expect(fileEdits, hasLength(1)); |
| 50 SourceFileEdit fileEdit = fileEdits[0]; | 50 SourceFileEdit fileEdit = fileEdits[0]; |
| 51 expect(fileEdit, isNotNull); | 51 expect(fileEdit, isNotNull); |
| 52 List<SourceEdit> edits = fileEdit.edits; | 52 List<SourceEdit> edits = fileEdit.edits; |
| 53 expect(edits, hasLength(1)); | 53 expect(edits, hasLength(1)); |
| 54 return edits[0]; | 54 return edits[0]; |
| 55 } | 55 } |
| 56 | 56 |
| 57 void test_writeClassDeclaration_interfaces() { |
| 58 Source source = addSource('/test.dart', 'class A {}'); |
| 59 CompilationUnit unit = resolveLibraryUnit(source); |
| 60 ClassDeclaration declaration = unit.declarations[0]; |
| 61 |
| 62 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 63 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 64 builder.addInsertion(0, (DartEditBuilder builder) { |
| 65 builder.writeClassDeclaration('C', |
| 66 interfaces: [declaration.element.type]); |
| 67 }); |
| 68 }); |
| 69 SourceEdit edit = getEdit(builder); |
| 70 expect( |
| 71 edit.replacement, equalsIgnoringWhitespace('class C implements A { }')); |
| 72 } |
| 73 |
| 57 void test_writeClassDeclaration_isAbstract() { | 74 void test_writeClassDeclaration_isAbstract() { |
| 58 Source source = addSource('/test.dart', ''); | 75 Source source = addSource('/test.dart', ''); |
| 59 resolveLibraryUnit(source); | 76 resolveLibraryUnit(source); |
| 60 | 77 |
| 61 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); | 78 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 62 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { | 79 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 63 builder.addInsertion(0, (DartEditBuilder builder) { | 80 builder.addInsertion(0, (DartEditBuilder builder) { |
| 64 builder.writeClassDeclaration('C', isAbstract: true); | 81 builder.writeClassDeclaration('C', isAbstract: true); |
| 65 }); | 82 }); |
| 66 }); | 83 }); |
| 67 SourceEdit edit = getEdit(builder); | 84 SourceEdit edit = getEdit(builder); |
| 68 expect(edit.replacement, equalsIgnoringWhitespace('abstract class C { }')); | 85 expect(edit.replacement, equalsIgnoringWhitespace('abstract class C { }')); |
| 69 } | 86 } |
| 70 | 87 |
| 71 void test_writeClassDeclaration_nameOnly() { | 88 void test_writeClassDeclaration_memberWriter() { |
| 72 Source source = addSource('/test.dart', ''); | 89 Source source = addSource('/test.dart', ''); |
| 73 resolveLibraryUnit(source); | 90 resolveLibraryUnit(source); |
| 74 | 91 |
| 75 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); | 92 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 76 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { | 93 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 77 builder.addInsertion(0, (DartEditBuilder builder) { | 94 builder.addInsertion(0, (DartEditBuilder builder) { |
| 78 builder.writeClassDeclaration('C'); | 95 builder.writeClassDeclaration('C', memberWriter: () { |
| 96 builder.write('/**/'); |
| 97 }); |
| 79 }); | 98 }); |
| 80 }); | 99 }); |
| 81 SourceEdit edit = getEdit(builder); | 100 SourceEdit edit = getEdit(builder); |
| 101 expect(edit.replacement, equalsIgnoringWhitespace('class C { /**/ }')); |
| 102 } |
| 103 |
| 104 void test_writeClassDeclaration_mixins_noSuperclass() { |
| 105 Source source = addSource('/test.dart', 'class A {}'); |
| 106 CompilationUnit unit = resolveLibraryUnit(source); |
| 107 ClassDeclaration classA = unit.declarations[0]; |
| 108 |
| 109 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 110 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 111 builder.addInsertion(0, (DartEditBuilder builder) { |
| 112 builder.writeClassDeclaration('C', mixins: [classA.element.type]); |
| 113 }); |
| 114 }); |
| 115 SourceEdit edit = getEdit(builder); |
| 116 expect(edit.replacement, |
| 117 equalsIgnoringWhitespace('class C extends Object with A { }')); |
| 118 } |
| 119 |
| 120 void test_writeClassDeclaration_mixins_superclass() { |
| 121 Source source = addSource('/test.dart', 'class A {} class B {}'); |
| 122 CompilationUnit unit = resolveLibraryUnit(source); |
| 123 ClassDeclaration classA = unit.declarations[0]; |
| 124 ClassDeclaration classB = unit.declarations[1]; |
| 125 |
| 126 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 127 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 128 builder.addInsertion(0, (DartEditBuilder builder) { |
| 129 builder.writeClassDeclaration('C', |
| 130 mixins: [classB.element.type], superclass: classA.element.type); |
| 131 }); |
| 132 }); |
| 133 SourceEdit edit = getEdit(builder); |
| 134 expect(edit.replacement, |
| 135 equalsIgnoringWhitespace('class C extends A with B { }')); |
| 136 } |
| 137 |
| 138 void test_writeClassDeclaration_nameGroupName() { |
| 139 Source source = addSource('/test.dart', ''); |
| 140 resolveLibraryUnit(source); |
| 141 |
| 142 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 143 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 144 builder.addInsertion(0, (DartEditBuilder builder) { |
| 145 builder.writeClassDeclaration('C', nameGroupName: 'name'); |
| 146 }); |
| 147 }); |
| 148 SourceEdit edit = getEdit(builder); |
| 82 expect(edit.replacement, equalsIgnoringWhitespace('class C { }')); | 149 expect(edit.replacement, equalsIgnoringWhitespace('class C { }')); |
| 83 | 150 |
| 84 List<LinkedEditGroup> linkedEditGroups = | 151 List<LinkedEditGroup> linkedEditGroups = |
| 85 builder.sourceChange.linkedEditGroups; | 152 builder.sourceChange.linkedEditGroups; |
| 86 expect(linkedEditGroups, hasLength(1)); | 153 expect(linkedEditGroups, hasLength(1)); |
| 87 LinkedEditGroup group = linkedEditGroups[0]; | 154 LinkedEditGroup group = linkedEditGroups[0]; |
| 88 expect(group.length, 1); | 155 expect(group.length, 1); |
| 89 expect(group.positions, hasLength(1)); | 156 expect(group.positions, hasLength(1)); |
| 90 } | 157 } |
| 91 | 158 |
| 92 void test_writeClassDeclaration_superclass() { | 159 void test_writeClassDeclaration_superclass() { |
| 93 Source source = addSource('/test.dart', 'class B {}'); | 160 Source source = addSource('/test.dart', 'class B {}'); |
| 94 CompilationUnit unit = resolveLibraryUnit(source); | 161 CompilationUnit unit = resolveLibraryUnit(source); |
| 95 ClassDeclaration declaration = unit.declarations[0]; | 162 ClassDeclaration declaration = unit.declarations[0]; |
| 96 | 163 |
| 97 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); | 164 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 98 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { | 165 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 99 builder.addInsertion(0, (DartEditBuilder builder) { | 166 builder.addInsertion(0, (DartEditBuilder builder) { |
| 100 builder.writeClassDeclaration('C', | 167 builder.writeClassDeclaration('C', |
| 101 superclass: declaration.element.type); | 168 superclass: declaration.element.type); |
| 102 }); | 169 }); |
| 103 }); | 170 }); |
| 104 SourceEdit edit = getEdit(builder); | 171 SourceEdit edit = getEdit(builder); |
| 105 expect(edit.replacement, equalsIgnoringWhitespace('class C extends B { }')); | 172 expect(edit.replacement, equalsIgnoringWhitespace('class C extends B { }')); |
| 106 } | 173 } |
| 107 | 174 |
| 175 void test_writeFieldDeclaration_initializerWriter() { |
| 176 String content = 'class A {}'; |
| 177 Source source = addSource('/test.dart', content); |
| 178 resolveLibraryUnit(source); |
| 179 |
| 180 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 181 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 182 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { |
| 183 builder.writeFieldDeclaration('f', initializerWriter: () { |
| 184 builder.write('e'); |
| 185 }); |
| 186 }); |
| 187 }); |
| 188 SourceEdit edit = getEdit(builder); |
| 189 expect(edit.replacement, equalsIgnoringWhitespace('var f = e;')); |
| 190 } |
| 191 |
| 192 void test_writeFieldDeclaration_isConst() { |
| 193 String content = 'class A {}'; |
| 194 Source source = addSource('/test.dart', content); |
| 195 resolveLibraryUnit(source); |
| 196 |
| 197 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 198 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 199 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { |
| 200 builder.writeFieldDeclaration('f', isConst: true); |
| 201 }); |
| 202 }); |
| 203 SourceEdit edit = getEdit(builder); |
| 204 expect(edit.replacement, equalsIgnoringWhitespace('const f;')); |
| 205 } |
| 206 |
| 207 void test_writeFieldDeclaration_isConst_isFinal() { |
| 208 String content = 'class A {}'; |
| 209 Source source = addSource('/test.dart', content); |
| 210 resolveLibraryUnit(source); |
| 211 |
| 212 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 213 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 214 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { |
| 215 builder.writeFieldDeclaration('f', isConst: true, isFinal: true); |
| 216 }); |
| 217 }); |
| 218 SourceEdit edit = getEdit(builder); |
| 219 expect(edit.replacement, equalsIgnoringWhitespace('const f;')); |
| 220 } |
| 221 |
| 222 void test_writeFieldDeclaration_isFinal() { |
| 223 String content = 'class A {}'; |
| 224 Source source = addSource('/test.dart', content); |
| 225 resolveLibraryUnit(source); |
| 226 |
| 227 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 228 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 229 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { |
| 230 builder.writeFieldDeclaration('f', isFinal: true); |
| 231 }); |
| 232 }); |
| 233 SourceEdit edit = getEdit(builder); |
| 234 expect(edit.replacement, equalsIgnoringWhitespace('final f;')); |
| 235 } |
| 236 |
| 237 void test_writeFieldDeclaration_isStatic() { |
| 238 String content = 'class A {}'; |
| 239 Source source = addSource('/test.dart', content); |
| 240 resolveLibraryUnit(source); |
| 241 |
| 242 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 243 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 244 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { |
| 245 builder.writeFieldDeclaration('f', isStatic: true); |
| 246 }); |
| 247 }); |
| 248 SourceEdit edit = getEdit(builder); |
| 249 expect(edit.replacement, equalsIgnoringWhitespace('static var f;')); |
| 250 } |
| 251 |
| 252 void test_writeFieldDeclaration_nameGroupName() { |
| 253 String content = 'class A {}'; |
| 254 Source source = addSource('/test.dart', content); |
| 255 resolveLibraryUnit(source); |
| 256 |
| 257 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 258 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 259 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { |
| 260 builder.writeFieldDeclaration('f', nameGroupName: 'name'); |
| 261 }); |
| 262 }); |
| 263 SourceEdit edit = getEdit(builder); |
| 264 expect(edit.replacement, equalsIgnoringWhitespace('var f;')); |
| 265 |
| 266 List<LinkedEditGroup> linkedEditGroups = |
| 267 builder.sourceChange.linkedEditGroups; |
| 268 expect(linkedEditGroups, hasLength(1)); |
| 269 LinkedEditGroup group = linkedEditGroups[0]; |
| 270 expect(group.length, 1); |
| 271 expect(group.positions, hasLength(1)); |
| 272 Position position = group.positions[0]; |
| 273 expect(position.offset, equals(13)); |
| 274 } |
| 275 |
| 276 void test_writeFieldDeclaration_type_typeGroupName() { |
| 277 String content = 'class A {} class B {}'; |
| 278 Source source = addSource('/test.dart', content); |
| 279 CompilationUnit unit = resolveLibraryUnit(source); |
| 280 ClassDeclaration declaration = unit.declarations[0]; |
| 281 |
| 282 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 283 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 284 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { |
| 285 builder.writeFieldDeclaration('f', |
| 286 type: declaration.element.type, typeGroupName: 'type'); |
| 287 }); |
| 288 }); |
| 289 SourceEdit edit = getEdit(builder); |
| 290 expect(edit.replacement, equalsIgnoringWhitespace('A f;')); |
| 291 |
| 292 List<LinkedEditGroup> linkedEditGroups = |
| 293 builder.sourceChange.linkedEditGroups; |
| 294 expect(linkedEditGroups, hasLength(1)); |
| 295 LinkedEditGroup group = linkedEditGroups[0]; |
| 296 expect(group.length, 1); |
| 297 expect(group.positions, hasLength(1)); |
| 298 Position position = group.positions[0]; |
| 299 expect(position.offset, equals(20)); |
| 300 } |
| 301 |
| 302 void test_writeGetterDeclaration_bodyWriter() { |
| 303 String content = 'class A {}'; |
| 304 Source source = addSource('/test.dart', content); |
| 305 resolveLibraryUnit(source); |
| 306 |
| 307 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 308 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 309 builder.addInsertion(content.length - 1, (DartEditBuilderImpl builder) { |
| 310 builder.writeGetterDeclaration('g', bodyWriter: () { |
| 311 builder.write('{}'); |
| 312 }); |
| 313 }); |
| 314 }); |
| 315 SourceEdit edit = getEdit(builder); |
| 316 expect(edit.replacement, equalsIgnoringWhitespace('get g {}')); |
| 317 } |
| 318 |
| 319 void test_writeGetterDeclaration_isStatic() { |
| 320 String content = 'class A {}'; |
| 321 Source source = addSource('/test.dart', content); |
| 322 resolveLibraryUnit(source); |
| 323 |
| 324 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 325 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 326 builder.addInsertion(content.length - 1, (DartEditBuilderImpl builder) { |
| 327 builder.writeGetterDeclaration('g', isStatic: true); |
| 328 }); |
| 329 }); |
| 330 SourceEdit edit = getEdit(builder); |
| 331 expect(edit.replacement, equalsIgnoringWhitespace('static get g => null;')); |
| 332 } |
| 333 |
| 334 void test_writeGetterDeclaration_nameGroupName() { |
| 335 String content = 'class A {}'; |
| 336 Source source = addSource('/test.dart', content); |
| 337 resolveLibraryUnit(source); |
| 338 |
| 339 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 340 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 341 builder.addInsertion(content.length - 1, (DartEditBuilderImpl builder) { |
| 342 builder.writeGetterDeclaration('g', nameGroupName: 'name'); |
| 343 }); |
| 344 }); |
| 345 SourceEdit edit = getEdit(builder); |
| 346 expect(edit.replacement, equalsIgnoringWhitespace('get g => null;')); |
| 347 |
| 348 List<LinkedEditGroup> linkedEditGroups = |
| 349 builder.sourceChange.linkedEditGroups; |
| 350 expect(linkedEditGroups, hasLength(1)); |
| 351 LinkedEditGroup group = linkedEditGroups[0]; |
| 352 expect(group.length, 1); |
| 353 expect(group.positions, hasLength(1)); |
| 354 Position position = group.positions[0]; |
| 355 expect(position.offset, equals(13)); |
| 356 } |
| 357 |
| 358 void test_writeGetterDeclaration_returnType() { |
| 359 String content = 'class A {} class B {}'; |
| 360 Source source = addSource('/test.dart', content); |
| 361 CompilationUnit unit = resolveLibraryUnit(source); |
| 362 ClassDeclaration classA = unit.declarations[0]; |
| 363 |
| 364 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 365 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 366 builder.addInsertion(content.length - 1, (DartEditBuilderImpl builder) { |
| 367 builder.writeGetterDeclaration('g', returnType: classA.element.type, ret
urnTypeGroupName: 'returnType'); |
| 368 }); |
| 369 }); |
| 370 SourceEdit edit = getEdit(builder); |
| 371 expect(edit.replacement, equalsIgnoringWhitespace('A get g => null;')); |
| 372 |
| 373 List<LinkedEditGroup> linkedEditGroups = |
| 374 builder.sourceChange.linkedEditGroups; |
| 375 expect(linkedEditGroups, hasLength(1)); |
| 376 LinkedEditGroup group = linkedEditGroups[0]; |
| 377 expect(group.length, 1); |
| 378 expect(group.positions, hasLength(1)); |
| 379 Position position = group.positions[0]; |
| 380 expect(position.offset, equals(20)); |
| 381 } |
| 382 |
| 108 void test_writeOverrideOfInheritedMember() { | 383 void test_writeOverrideOfInheritedMember() { |
| 109 String content = ''' | 384 String content = ''' |
| 110 class A { | 385 class A { |
| 111 A add(A a) => null; | 386 A add(A a) => null; |
| 112 } | 387 } |
| 113 class B extends A { | 388 class B extends A { |
| 114 }'''; | 389 }'''; |
| 115 Source source = addSource('/test.dart', content); | 390 Source source = addSource('/test.dart', content); |
| 116 CompilationUnit unit = resolveLibraryUnit(source); | 391 CompilationUnit unit = resolveLibraryUnit(source); |
| 117 ClassDeclaration declaration = unit.declarations[0]; | 392 ClassDeclaration declaration = unit.declarations[0]; |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 | 682 |
| 408 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); | 683 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 409 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { | 684 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 410 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { | 685 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { |
| 411 builder.writeType(classA.element.type); | 686 builder.writeType(classA.element.type); |
| 412 }); | 687 }); |
| 413 }); | 688 }); |
| 414 SourceEdit edit = getEdit(builder); | 689 SourceEdit edit = getEdit(builder); |
| 415 expect(edit.replacement, equalsIgnoringWhitespace('A')); | 690 expect(edit.replacement, equalsIgnoringWhitespace('A')); |
| 416 } | 691 } |
| 692 |
| 693 void test_writeTypes_empty() { |
| 694 String content = 'class A {}'; |
| 695 Source source = addSource('/test.dart', content); |
| 696 resolveLibraryUnit(source); |
| 697 |
| 698 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 699 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 700 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { |
| 701 (builder as DartEditBuilderImpl).writeTypes([]); |
| 702 }); |
| 703 }); |
| 704 SourceEdit edit = getEdit(builder); |
| 705 expect(edit.replacement, isEmpty); |
| 706 } |
| 707 |
| 708 void test_writeTypes_noPrefix() { |
| 709 String content = 'class A {} class B {}'; |
| 710 Source source = addSource('/test.dart', content); |
| 711 CompilationUnit unit = resolveLibraryUnit(source); |
| 712 ClassDeclaration classA = unit.declarations[0]; |
| 713 ClassDeclaration classB = unit.declarations[1]; |
| 714 |
| 715 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 716 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 717 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { |
| 718 (builder as DartEditBuilderImpl) |
| 719 .writeTypes([classA.element.type, classB.element.type]); |
| 720 }); |
| 721 }); |
| 722 SourceEdit edit = getEdit(builder); |
| 723 expect(edit.replacement, equalsIgnoringWhitespace('A, B')); |
| 724 } |
| 725 |
| 726 void test_writeTypes_null() { |
| 727 String content = 'class A {}'; |
| 728 Source source = addSource('/test.dart', content); |
| 729 resolveLibraryUnit(source); |
| 730 |
| 731 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 732 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 733 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { |
| 734 (builder as DartEditBuilderImpl).writeTypes(null); |
| 735 }); |
| 736 }); |
| 737 SourceEdit edit = getEdit(builder); |
| 738 expect(edit.replacement, isEmpty); |
| 739 } |
| 740 |
| 741 void test_writeTypes_prefix() { |
| 742 String content = 'class A {} class B {}'; |
| 743 Source source = addSource('/test.dart', content); |
| 744 CompilationUnit unit = resolveLibraryUnit(source); |
| 745 ClassDeclaration classA = unit.declarations[0]; |
| 746 ClassDeclaration classB = unit.declarations[1]; |
| 747 |
| 748 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 749 builder.addFileEdit(source, 1, (DartFileEditBuilderImpl builder) { |
| 750 builder.addInsertion(content.length - 1, (DartEditBuilder builder) { |
| 751 (builder as DartEditBuilderImpl).writeTypes( |
| 752 [classA.element.type, classB.element.type], prefix: 'implements '); |
| 753 }); |
| 754 }); |
| 755 SourceEdit edit = getEdit(builder); |
| 756 expect(edit.replacement, equalsIgnoringWhitespace('implements A, B')); |
| 757 } |
| 417 } | 758 } |
| 418 | 759 |
| 419 @reflectiveTest | 760 @reflectiveTest |
| 420 class DartFileEditBuilderImplTest extends AbstractContextTest { | 761 class DartFileEditBuilderImplTest extends AbstractContextTest { |
| 421 void test_createEditBuilder() { | 762 void test_createEditBuilder() { |
| 422 Source source = addSource('/test.dart', 'library test;'); | 763 Source source = addSource('/test.dart', 'library test;'); |
| 423 resolveLibraryUnit(source); | 764 resolveLibraryUnit(source); |
| 424 int timeStamp = 65; | 765 int timeStamp = 65; |
| 425 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); | 766 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(context); |
| 426 builder.addFileEdit(source, timeStamp, (DartFileEditBuilderImpl builder) { | 767 builder.addFileEdit(source, timeStamp, (DartFileEditBuilderImpl builder) { |
| 427 int offset = 4; | 768 int offset = 4; |
| 428 int length = 5; | 769 int length = 5; |
| 429 DartEditBuilderImpl editBuilder = | 770 DartEditBuilderImpl editBuilder = |
| 430 builder.createEditBuilder(offset, length); | 771 builder.createEditBuilder(offset, length); |
| 431 expect(editBuilder, new isInstanceOf<DartEditBuilder>()); | 772 expect(editBuilder, new isInstanceOf<DartEditBuilder>()); |
| 432 SourceEdit sourceEdit = editBuilder.sourceEdit; | 773 SourceEdit sourceEdit = editBuilder.sourceEdit; |
| 433 expect(sourceEdit.length, length); | 774 expect(sourceEdit.length, length); |
| 434 expect(sourceEdit.offset, offset); | 775 expect(sourceEdit.offset, offset); |
| 435 expect(sourceEdit.replacement, isEmpty); | 776 expect(sourceEdit.replacement, isEmpty); |
| 436 }); | 777 }); |
| 437 } | 778 } |
| 438 } | 779 } |
| OLD | NEW |