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

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

Issue 2691433008: AnalysisDriver.getUnitElement() should return a structure with a key. (Closed)
Patch Set: Created 3 years, 10 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 | « no previous file | pkg/analyzer/lib/src/dart/analysis/driver.dart » ('j') | 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 import 'dart:async';
6
5 import 'package:analysis_server/plugin/protocol/protocol.dart'; 7 import 'package:analysis_server/plugin/protocol/protocol.dart';
6 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';
7 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';
8 import 'package:analysis_server/src/utilities/change_builder_dart.dart'; 10 import 'package:analysis_server/src/utilities/change_builder_dart.dart';
9 import 'package:analyzer/dart/ast/ast.dart'; 11 import 'package:analyzer/dart/ast/ast.dart';
10 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; 12 import 'package:analyzer/dart/ast/standard_resolution_map.dart';
11 import 'package:analyzer/dart/element/element.dart'; 13 import 'package:analyzer/dart/element/element.dart';
12 import 'package:analyzer/dart/element/type.dart'; 14 import 'package:analyzer/dart/element/type.dart';
15 import 'package:analyzer/src/dart/analysis/driver.dart';
13 import 'package:test/test.dart'; 16 import 'package:test/test.dart';
14 import 'package:test_reflective_loader/test_reflective_loader.dart'; 17 import 'package:test_reflective_loader/test_reflective_loader.dart';
15 18
16 import '../../abstract_context.dart'; 19 import '../../abstract_context.dart';
17 20
18 main() { 21 main() {
19 defineReflectiveSuite(() { 22 defineReflectiveSuite(() {
20 defineReflectiveTests(DartChangeBuilderImplTest); 23 defineReflectiveTests(DartChangeBuilderImplTest);
21 defineReflectiveTests(DartEditBuilderImplTest); 24 defineReflectiveTests(DartEditBuilderImplTest);
22 defineReflectiveTests(DartFileEditBuilderImplTest); 25 defineReflectiveTests(DartFileEditBuilderImplTest);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 SourceFileEdit fileEdit = fileEdits[0]; 58 SourceFileEdit fileEdit = fileEdits[0];
56 expect(fileEdit, isNotNull); 59 expect(fileEdit, isNotNull);
57 List<SourceEdit> edits = fileEdit.edits; 60 List<SourceEdit> edits = fileEdit.edits;
58 expect(edits, hasLength(1)); 61 expect(edits, hasLength(1));
59 return edits[0]; 62 return edits[0];
60 } 63 }
61 64
62 test_writeClassDeclaration_interfaces() async { 65 test_writeClassDeclaration_interfaces() async {
63 String path = '/test.dart'; 66 String path = '/test.dart';
64 addSource(path, 'class A {}'); 67 addSource(path, 'class A {}');
65 DartType typeA = (await driver.getUnitElement(path)).getType('A').type; 68 DartType typeA = await _getType(path, 'A');
66 69
67 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 70 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
68 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 71 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
69 builder.addInsertion(0, (EditBuilder builder) { 72 builder.addInsertion(0, (EditBuilder builder) {
70 (builder as DartEditBuilder) 73 (builder as DartEditBuilder)
71 .writeClassDeclaration('C', interfaces: [typeA]); 74 .writeClassDeclaration('C', interfaces: [typeA]);
72 }); 75 });
73 }); 76 });
74 SourceEdit edit = getEdit(builder); 77 SourceEdit edit = getEdit(builder);
75 expect( 78 expect(
(...skipping 28 matching lines...) Expand all
104 }); 107 });
105 }); 108 });
106 }); 109 });
107 SourceEdit edit = getEdit(builder); 110 SourceEdit edit = getEdit(builder);
108 expect(edit.replacement, equalsIgnoringWhitespace('class C { /**/ }')); 111 expect(edit.replacement, equalsIgnoringWhitespace('class C { /**/ }'));
109 } 112 }
110 113
111 test_writeClassDeclaration_mixins_noSuperclass() async { 114 test_writeClassDeclaration_mixins_noSuperclass() async {
112 String path = '/test.dart'; 115 String path = '/test.dart';
113 addSource(path, 'class A {}'); 116 addSource(path, 'class A {}');
114 DartType typeA = (await driver.getUnitElement(path)).getType('A').type; 117 DartType typeA = await _getType(path, 'A');
115 118
116 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 119 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
117 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 120 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
118 builder.addInsertion(0, (EditBuilder builder) { 121 builder.addInsertion(0, (EditBuilder builder) {
119 (builder as DartEditBuilder) 122 (builder as DartEditBuilder)
120 .writeClassDeclaration('C', mixins: [typeA]); 123 .writeClassDeclaration('C', mixins: [typeA]);
121 }); 124 });
122 }); 125 });
123 SourceEdit edit = getEdit(builder); 126 SourceEdit edit = getEdit(builder);
124 expect(edit.replacement, 127 expect(edit.replacement,
125 equalsIgnoringWhitespace('class C extends Object with A { }')); 128 equalsIgnoringWhitespace('class C extends Object with A { }'));
126 } 129 }
127 130
128 test_writeClassDeclaration_mixins_superclass() async { 131 test_writeClassDeclaration_mixins_superclass() async {
129 String path = '/test.dart'; 132 String path = '/test.dart';
130 addSource(path, 'class A {} class B {}'); 133 addSource(path, 'class A {} class B {}');
131 DartType typeA = (await driver.getUnitElement(path)).getType('A').type; 134 DartType typeA = await _getType(path, 'A');
132 DartType typeB = (await driver.getUnitElement(path)).getType('B').type; 135 DartType typeB = await _getType(path, 'B');
133 136
134 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 137 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
135 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 138 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
136 builder.addInsertion(0, (EditBuilder builder) { 139 builder.addInsertion(0, (EditBuilder builder) {
137 (builder as DartEditBuilder) 140 (builder as DartEditBuilder)
138 .writeClassDeclaration('C', mixins: [typeB], superclass: typeA); 141 .writeClassDeclaration('C', mixins: [typeB], superclass: typeA);
139 }); 142 });
140 }); 143 });
141 SourceEdit edit = getEdit(builder); 144 SourceEdit edit = getEdit(builder);
142 expect(edit.replacement, 145 expect(edit.replacement,
(...skipping 18 matching lines...) Expand all
161 builder.sourceChange.linkedEditGroups; 164 builder.sourceChange.linkedEditGroups;
162 expect(linkedEditGroups, hasLength(1)); 165 expect(linkedEditGroups, hasLength(1));
163 LinkedEditGroup group = linkedEditGroups[0]; 166 LinkedEditGroup group = linkedEditGroups[0];
164 expect(group.length, 1); 167 expect(group.length, 1);
165 expect(group.positions, hasLength(1)); 168 expect(group.positions, hasLength(1));
166 } 169 }
167 170
168 test_writeClassDeclaration_superclass() async { 171 test_writeClassDeclaration_superclass() async {
169 String path = '/test.dart'; 172 String path = '/test.dart';
170 addSource(path, 'class B {}'); 173 addSource(path, 'class B {}');
171 DartType typeB = (await driver.getUnitElement(path)).getType('B').type; 174 DartType typeB = await _getType(path, 'B');
172 175
173 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 176 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
174 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 177 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
175 builder.addInsertion(0, (EditBuilder builder) { 178 builder.addInsertion(0, (EditBuilder builder) {
176 (builder as DartEditBuilder) 179 (builder as DartEditBuilder)
177 .writeClassDeclaration('C', superclass: typeB); 180 .writeClassDeclaration('C', superclass: typeB);
178 }); 181 });
179 }); 182 });
180 SourceEdit edit = getEdit(builder); 183 SourceEdit edit = getEdit(builder);
181 expect(edit.replacement, equalsIgnoringWhitespace('class C extends B { }')); 184 expect(edit.replacement, equalsIgnoringWhitespace('class C extends B { }'));
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 expect(group.length, 1); 285 expect(group.length, 1);
283 expect(group.positions, hasLength(1)); 286 expect(group.positions, hasLength(1));
284 Position position = group.positions[0]; 287 Position position = group.positions[0];
285 expect(position.offset, equals(13)); 288 expect(position.offset, equals(13));
286 } 289 }
287 290
288 test_writeFieldDeclaration_type_typeGroupName() async { 291 test_writeFieldDeclaration_type_typeGroupName() async {
289 String path = '/test.dart'; 292 String path = '/test.dart';
290 String content = 'class A {} class B {}'; 293 String content = 'class A {} class B {}';
291 addSource(path, content); 294 addSource(path, content);
292 DartType typeA = (await driver.getUnitElement(path)).getType('A').type; 295 DartType typeA = await _getType(path, 'A');
293 296
294 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 297 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
295 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 298 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
296 builder.addInsertion(content.length - 1, (EditBuilder builder) { 299 builder.addInsertion(content.length - 1, (EditBuilder builder) {
297 (builder as DartEditBuilder) 300 (builder as DartEditBuilder)
298 .writeFieldDeclaration('f', type: typeA, typeGroupName: 'type'); 301 .writeFieldDeclaration('f', type: typeA, typeGroupName: 'type');
299 }); 302 });
300 }); 303 });
301 SourceEdit edit = getEdit(builder); 304 SourceEdit edit = getEdit(builder);
302 expect(edit.replacement, equalsIgnoringWhitespace('A f;')); 305 expect(edit.replacement, equalsIgnoringWhitespace('A f;'));
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 expect(group.length, 1); 370 expect(group.length, 1);
368 expect(group.positions, hasLength(1)); 371 expect(group.positions, hasLength(1));
369 Position position = group.positions[0]; 372 Position position = group.positions[0];
370 expect(position.offset, equals(13)); 373 expect(position.offset, equals(13));
371 } 374 }
372 375
373 test_writeGetterDeclaration_returnType() async { 376 test_writeGetterDeclaration_returnType() async {
374 String path = '/test.dart'; 377 String path = '/test.dart';
375 String content = 'class A {} class B {}'; 378 String content = 'class A {} class B {}';
376 addSource(path, content); 379 addSource(path, content);
377 DartType typeA = (await driver.getUnitElement(path)).getType('A').type; 380 DartType typeA = await _getType(path, 'A');
378 381
379 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 382 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
380 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 383 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
381 builder.addInsertion(content.length - 1, (EditBuilder builder) { 384 builder.addInsertion(content.length - 1, (EditBuilder builder) {
382 (builder as DartEditBuilder).writeGetterDeclaration('g', 385 (builder as DartEditBuilder).writeGetterDeclaration('g',
383 returnType: typeA, returnTypeGroupName: 'returnType'); 386 returnType: typeA, returnTypeGroupName: 'returnType');
384 }); 387 });
385 }); 388 });
386 SourceEdit edit = getEdit(builder); 389 SourceEdit edit = getEdit(builder);
387 expect(edit.replacement, equalsIgnoringWhitespace('A get g => null;')); 390 expect(edit.replacement, equalsIgnoringWhitespace('A get g => null;'));
(...skipping 10 matching lines...) Expand all
398 401
399 test_writeOverrideOfInheritedMember() async { 402 test_writeOverrideOfInheritedMember() async {
400 String path = '/test.dart'; 403 String path = '/test.dart';
401 String content = ''' 404 String content = '''
402 class A { 405 class A {
403 A add(A a) => null; 406 A add(A a) => null;
404 } 407 }
405 class B extends A { 408 class B extends A {
406 }'''; 409 }''';
407 addSource(path, content); 410 addSource(path, content);
408 ClassElement classA = (await driver.getUnitElement(path)).getType('A'); 411 ClassElement classA = await _getClassElement(path, 'A');
409 412
410 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 413 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
411 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 414 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
412 builder.addInsertion(content.length - 1, (EditBuilder builder) { 415 builder.addInsertion(content.length - 1, (EditBuilder builder) {
413 (builder as DartEditBuilder) 416 (builder as DartEditBuilder)
414 .writeOverrideOfInheritedMember(classA.methods[0]); 417 .writeOverrideOfInheritedMember(classA.methods[0]);
415 }); 418 });
416 }); 419 });
417 SourceEdit edit = getEdit(builder); 420 SourceEdit edit = getEdit(builder);
418 expect(edit.replacement, equalsIgnoringWhitespace(''' 421 expect(edit.replacement, equalsIgnoringWhitespace('''
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 }); 532 });
530 }); 533 });
531 SourceEdit edit = getEdit(builder); 534 SourceEdit edit = getEdit(builder);
532 expect(edit.replacement, equalsIgnoringWhitespace('(String s, int i)')); 535 expect(edit.replacement, equalsIgnoringWhitespace('(String s, int i)'));
533 } 536 }
534 537
535 test_writeParameterSource() async { 538 test_writeParameterSource() async {
536 String path = '/test.dart'; 539 String path = '/test.dart';
537 String content = 'class A {}'; 540 String content = 'class A {}';
538 addSource(path, content); 541 addSource(path, content);
539 DartType typeA = (await driver.getUnitElement(path)).getType('A').type; 542 DartType typeA = await _getType(path, 'A');
540 543
541 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 544 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
542 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 545 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
543 builder.addInsertion(content.length - 1, (EditBuilder builder) { 546 builder.addInsertion(content.length - 1, (EditBuilder builder) {
544 (builder as DartEditBuilder).writeParameterSource(typeA, 'a'); 547 (builder as DartEditBuilder).writeParameterSource(typeA, 'a');
545 }); 548 });
546 }); 549 });
547 SourceEdit edit = getEdit(builder); 550 SourceEdit edit = getEdit(builder);
548 expect(edit.replacement, equalsIgnoringWhitespace('A a')); 551 expect(edit.replacement, equalsIgnoringWhitespace('A a'));
549 } 552 }
(...skipping 15 matching lines...) Expand all
565 }); 568 });
566 }); 569 });
567 SourceEdit edit = getEdit(builder); 570 SourceEdit edit = getEdit(builder);
568 expect(edit.replacement, equalsIgnoringWhitespace('')); 571 expect(edit.replacement, equalsIgnoringWhitespace(''));
569 } 572 }
570 573
571 test_writeType_genericType() async { 574 test_writeType_genericType() async {
572 String path = '/test.dart'; 575 String path = '/test.dart';
573 String content = 'class A {} class B<E> {}'; 576 String content = 'class A {} class B<E> {}';
574 addSource(path, content); 577 addSource(path, content);
575 InterfaceType typeA = (await driver.getUnitElement(path)).getType('A').type; 578 InterfaceType typeA = await _getType(path, 'A');
576 InterfaceType typeB = (await driver.getUnitElement(path)).getType('B').type; 579 InterfaceType typeB = await _getType(path, 'B');
577 580
578 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 581 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
579 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 582 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
580 builder.addInsertion(content.length - 1, (EditBuilder builder) { 583 builder.addInsertion(content.length - 1, (EditBuilder builder) {
581 (builder as DartEditBuilder).writeType(typeB.instantiate([typeA])); 584 (builder as DartEditBuilder).writeType(typeB.instantiate([typeA]));
582 }); 585 });
583 }); 586 });
584 SourceEdit edit = getEdit(builder); 587 SourceEdit edit = getEdit(builder);
585 expect(edit.replacement, equalsIgnoringWhitespace('B<A>')); 588 expect(edit.replacement, equalsIgnoringWhitespace('B<A>'));
586 } 589 }
587 590
588 test_writeType_groupName() async { 591 test_writeType_groupName() async {
589 String path = '/test.dart'; 592 String path = '/test.dart';
590 String content = 'class A {} class B extends A {} class C extends B {}'; 593 String content = 'class A {} class B extends A {} class C extends B {}';
591 addSource(path, content); 594 addSource(path, content);
592 DartType typeC = (await driver.getUnitElement(path)).getType('C').type; 595 DartType typeC = await _getType(path, 'C');
593 596
594 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 597 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
595 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 598 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
596 builder.addInsertion(content.length - 1, (EditBuilder builder) { 599 builder.addInsertion(content.length - 1, (EditBuilder builder) {
597 (builder as DartEditBuilder).writeType(typeC, groupName: 'type'); 600 (builder as DartEditBuilder).writeType(typeC, groupName: 'type');
598 }); 601 });
599 }); 602 });
600 SourceEdit edit = getEdit(builder); 603 SourceEdit edit = getEdit(builder);
601 expect(edit.replacement, equalsIgnoringWhitespace('C')); 604 expect(edit.replacement, equalsIgnoringWhitespace('C'));
602 605
603 List<LinkedEditGroup> linkedEditGroups = 606 List<LinkedEditGroup> linkedEditGroups =
604 builder.sourceChange.linkedEditGroups; 607 builder.sourceChange.linkedEditGroups;
605 expect(linkedEditGroups, hasLength(1)); 608 expect(linkedEditGroups, hasLength(1));
606 LinkedEditGroup group = linkedEditGroups[0]; 609 LinkedEditGroup group = linkedEditGroups[0];
607 expect(group, isNotNull); 610 expect(group, isNotNull);
608 } 611 }
609 612
610 test_writeType_groupName_addSupertypeProposals() async { 613 test_writeType_groupName_addSupertypeProposals() async {
611 String path = '/test.dart'; 614 String path = '/test.dart';
612 String content = 'class A {} class B extends A {} class C extends B {}'; 615 String content = 'class A {} class B extends A {} class C extends B {}';
613 addSource(path, content); 616 addSource(path, content);
614 DartType typeC = (await driver.getUnitElement(path)).getType('C').type; 617 DartType typeC = await _getType(path, 'C');
615 618
616 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 619 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
617 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 620 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
618 builder.addInsertion(content.length - 1, (EditBuilder builder) { 621 builder.addInsertion(content.length - 1, (EditBuilder builder) {
619 (builder as DartEditBuilder) 622 (builder as DartEditBuilder)
620 .writeType(typeC, addSupertypeProposals: true, groupName: 'type'); 623 .writeType(typeC, addSupertypeProposals: true, groupName: 'type');
621 }); 624 });
622 }); 625 });
623 SourceEdit edit = getEdit(builder); 626 SourceEdit edit = getEdit(builder);
624 expect(edit.replacement, equalsIgnoringWhitespace('C')); 627 expect(edit.replacement, equalsIgnoringWhitespace('C'));
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 }); 677 });
675 }); 678 });
676 SourceEdit edit = getEdit(builder); 679 SourceEdit edit = getEdit(builder);
677 expect(edit.replacement, equalsIgnoringWhitespace('var')); 680 expect(edit.replacement, equalsIgnoringWhitespace('var'));
678 } 681 }
679 682
680 test_writeType_required_notNull() async { 683 test_writeType_required_notNull() async {
681 String path = '/test.dart'; 684 String path = '/test.dart';
682 String content = 'class A {}'; 685 String content = 'class A {}';
683 addSource(path, content); 686 addSource(path, content);
684 DartType typeA = (await driver.getUnitElement(path)).getType('A').type; 687 DartType typeA = await _getType(path, 'A');
685 688
686 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 689 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
687 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 690 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
688 builder.addInsertion(content.length - 1, (EditBuilder builder) { 691 builder.addInsertion(content.length - 1, (EditBuilder builder) {
689 (builder as DartEditBuilder).writeType(typeA, required: true); 692 (builder as DartEditBuilder).writeType(typeA, required: true);
690 }); 693 });
691 }); 694 });
692 SourceEdit edit = getEdit(builder); 695 SourceEdit edit = getEdit(builder);
693 expect(edit.replacement, equalsIgnoringWhitespace('A')); 696 expect(edit.replacement, equalsIgnoringWhitespace('A'));
694 } 697 }
(...skipping 10 matching lines...) Expand all
705 }); 708 });
706 }); 709 });
707 SourceEdit edit = getEdit(builder); 710 SourceEdit edit = getEdit(builder);
708 expect(edit.replacement, equalsIgnoringWhitespace('var')); 711 expect(edit.replacement, equalsIgnoringWhitespace('var'));
709 } 712 }
710 713
711 test_writeType_simpleType() async { 714 test_writeType_simpleType() async {
712 String path = '/test.dart'; 715 String path = '/test.dart';
713 String content = 'class A {}'; 716 String content = 'class A {}';
714 addSource(path, content); 717 addSource(path, content);
715 DartType typeA = (await driver.getUnitElement(path)).getType('A').type; 718 DartType typeA = await _getType(path, 'A');
716 719
717 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 720 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
718 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 721 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
719 builder.addInsertion(content.length - 1, (EditBuilder builder) { 722 builder.addInsertion(content.length - 1, (EditBuilder builder) {
720 (builder as DartEditBuilder).writeType(typeA); 723 (builder as DartEditBuilder).writeType(typeA);
721 }); 724 });
722 }); 725 });
723 SourceEdit edit = getEdit(builder); 726 SourceEdit edit = getEdit(builder);
724 expect(edit.replacement, equalsIgnoringWhitespace('A')); 727 expect(edit.replacement, equalsIgnoringWhitespace('A'));
725 } 728 }
(...skipping 10 matching lines...) Expand all
736 }); 739 });
737 }); 740 });
738 SourceEdit edit = getEdit(builder); 741 SourceEdit edit = getEdit(builder);
739 expect(edit.replacement, isEmpty); 742 expect(edit.replacement, isEmpty);
740 } 743 }
741 744
742 test_writeTypes_noPrefix() async { 745 test_writeTypes_noPrefix() async {
743 String path = '/test.dart'; 746 String path = '/test.dart';
744 String content = 'class A {} class B {}'; 747 String content = 'class A {} class B {}';
745 addSource(path, content); 748 addSource(path, content);
746 DartType typeA = (await driver.getUnitElement(path)).getType('A').type; 749 DartType typeA = await _getType(path, 'A');
747 DartType typeB = (await driver.getUnitElement(path)).getType('B').type; 750 DartType typeB = await _getType(path, 'B');
748 751
749 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 752 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
750 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 753 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
751 builder.addInsertion(content.length - 1, (EditBuilder builder) { 754 builder.addInsertion(content.length - 1, (EditBuilder builder) {
752 (builder as DartEditBuilderImpl).writeTypes([typeA, typeB]); 755 (builder as DartEditBuilderImpl).writeTypes([typeA, typeB]);
753 }); 756 });
754 }); 757 });
755 SourceEdit edit = getEdit(builder); 758 SourceEdit edit = getEdit(builder);
756 expect(edit.replacement, equalsIgnoringWhitespace('A, B')); 759 expect(edit.replacement, equalsIgnoringWhitespace('A, B'));
757 } 760 }
(...skipping 10 matching lines...) Expand all
768 }); 771 });
769 }); 772 });
770 SourceEdit edit = getEdit(builder); 773 SourceEdit edit = getEdit(builder);
771 expect(edit.replacement, isEmpty); 774 expect(edit.replacement, isEmpty);
772 } 775 }
773 776
774 test_writeTypes_prefix() async { 777 test_writeTypes_prefix() async {
775 String path = '/test.dart'; 778 String path = '/test.dart';
776 String content = 'class A {} class B {}'; 779 String content = 'class A {} class B {}';
777 addSource(path, content); 780 addSource(path, content);
778 DartType typeA = (await driver.getUnitElement(path)).getType('A').type; 781 DartType typeA = await _getType(path, 'A');
779 DartType typeB = (await driver.getUnitElement(path)).getType('B').type; 782 DartType typeB = await _getType(path, 'B');
780 783
781 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 784 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
782 await builder.addFileEdit(path, 1, (FileEditBuilder builder) { 785 await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
783 builder.addInsertion(content.length - 1, (EditBuilder builder) { 786 builder.addInsertion(content.length - 1, (EditBuilder builder) {
784 (builder as DartEditBuilderImpl) 787 (builder as DartEditBuilderImpl)
785 .writeTypes([typeA, typeB], prefix: 'implements '); 788 .writeTypes([typeA, typeB], prefix: 'implements ');
786 }); 789 });
787 }); 790 });
788 SourceEdit edit = getEdit(builder); 791 SourceEdit edit = getEdit(builder);
789 expect(edit.replacement, equalsIgnoringWhitespace('implements A, B')); 792 expect(edit.replacement, equalsIgnoringWhitespace('implements A, B'));
790 } 793 }
794
795 Future<ClassElement> _getClassElement(String path, String name) async {
796 UnitElementResult result = await driver.getUnitElement(path);
797 return result.element.getType(name);
798 }
799
800 Future<DartType> _getType(String path, String name) async {
801 ClassElement classElement = await _getClassElement(path, name);
802 return classElement.type;
803 }
791 } 804 }
792 805
793 @reflectiveTest 806 @reflectiveTest
794 class DartFileEditBuilderImplTest extends AbstractContextTest { 807 class DartFileEditBuilderImplTest extends AbstractContextTest {
795 @override 808 @override
796 bool get enableNewAnalysisDriver => true; 809 bool get enableNewAnalysisDriver => true;
797 810
798 test_createEditBuilder() async { 811 test_createEditBuilder() async {
799 String path = '/test.dart'; 812 String path = '/test.dart';
800 addSource(path, 'library test;'); 813 addSource(path, 'library test;');
801 int timeStamp = 65; 814 int timeStamp = 65;
802 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver); 815 DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
803 await builder.addFileEdit(path, timeStamp, (FileEditBuilder builder) { 816 await builder.addFileEdit(path, timeStamp, (FileEditBuilder builder) {
804 int offset = 4; 817 int offset = 4;
805 int length = 5; 818 int length = 5;
806 DartEditBuilderImpl editBuilder = (builder as DartFileEditBuilderImpl) 819 DartEditBuilderImpl editBuilder = (builder as DartFileEditBuilderImpl)
807 .createEditBuilder(offset, length); 820 .createEditBuilder(offset, length);
808 expect(editBuilder, new isInstanceOf<DartEditBuilder>()); 821 expect(editBuilder, new isInstanceOf<DartEditBuilder>());
809 SourceEdit sourceEdit = editBuilder.sourceEdit; 822 SourceEdit sourceEdit = editBuilder.sourceEdit;
810 expect(sourceEdit.length, length); 823 expect(sourceEdit.length, length);
811 expect(sourceEdit.offset, offset); 824 expect(sourceEdit.offset, offset);
812 expect(sourceEdit.replacement, isEmpty); 825 expect(sourceEdit.replacement, isEmpty);
813 }); 826 });
814 } 827 }
815 } 828 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/dart/analysis/driver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698