| Index: pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart
|
| diff --git a/pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart b/pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart
|
| deleted file mode 100644
|
| index dc048f85112c944eab36e992a4b20a275dbc0088..0000000000000000000000000000000000000000
|
| --- a/pkg/analysis_server/test/src/utilities/change_builder_dart_test.dart
|
| +++ /dev/null
|
| @@ -1,1213 +0,0 @@
|
| -// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -import 'dart:async';
|
| -
|
| -import 'package:analysis_server/protocol/protocol_generated.dart';
|
| -import 'package:analysis_server/src/provisional/edit/utilities/change_builder_core.dart';
|
| -import 'package:analysis_server/src/provisional/edit/utilities/change_builder_dart.dart';
|
| -import 'package:analysis_server/src/utilities/change_builder_dart.dart';
|
| -import 'package:analyzer/dart/ast/ast.dart';
|
| -import 'package:analyzer/dart/ast/standard_resolution_map.dart';
|
| -import 'package:analyzer/dart/element/element.dart';
|
| -import 'package:analyzer/dart/element/type.dart';
|
| -import 'package:analyzer/src/context/source.dart';
|
| -import 'package:analyzer/src/dart/analysis/driver.dart';
|
| -import 'package:analyzer/src/generated/engine.dart';
|
| -import 'package:analyzer/src/generated/resolver.dart';
|
| -import 'package:analyzer/src/generated/source.dart';
|
| -import 'package:analyzer/src/generated/testing/test_type_provider.dart';
|
| -import 'package:test/test.dart';
|
| -import 'package:test_reflective_loader/test_reflective_loader.dart';
|
| -
|
| -import '../../abstract_context.dart';
|
| -
|
| -main() {
|
| - defineReflectiveSuite(() {
|
| - defineReflectiveTests(DartChangeBuilderImplTest);
|
| - defineReflectiveTests(DartEditBuilderImplTest);
|
| - defineReflectiveTests(DartFileEditBuilderImplTest);
|
| - defineReflectiveTests(DartLinkedEditBuilderImplTest);
|
| - });
|
| -}
|
| -
|
| -abstract class BuilderTestMixin {
|
| - SourceEdit getEdit(DartChangeBuilderImpl builder) {
|
| - SourceChange sourceChange = builder.sourceChange;
|
| - expect(sourceChange, isNotNull);
|
| - List<SourceFileEdit> fileEdits = sourceChange.edits;
|
| - expect(fileEdits, hasLength(1));
|
| - SourceFileEdit fileEdit = fileEdits[0];
|
| - expect(fileEdit, isNotNull);
|
| - List<SourceEdit> edits = fileEdit.edits;
|
| - expect(edits, hasLength(1));
|
| - return edits[0];
|
| - }
|
| -
|
| - List<SourceEdit> getEdits(DartChangeBuilderImpl builder) {
|
| - SourceChange sourceChange = builder.sourceChange;
|
| - expect(sourceChange, isNotNull);
|
| - List<SourceFileEdit> fileEdits = sourceChange.edits;
|
| - expect(fileEdits, hasLength(1));
|
| - SourceFileEdit fileEdit = fileEdits[0];
|
| - expect(fileEdit, isNotNull);
|
| - return fileEdit.edits;
|
| - }
|
| -}
|
| -
|
| -@reflectiveTest
|
| -class DartChangeBuilderImplTest extends AbstractContextTest {
|
| - @override
|
| - bool get enableNewAnalysisDriver => true;
|
| -
|
| - test_createFileEditBuilder() async {
|
| - String path = '/test.dart';
|
| - addSource(path, 'library test;');
|
| - int timeStamp = 54;
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - DartFileEditBuilderImpl fileEditBuilder =
|
| - await builder.createFileEditBuilder(path, timeStamp);
|
| - expect(fileEditBuilder, new isInstanceOf<DartFileEditBuilder>());
|
| - SourceFileEdit fileEdit = fileEditBuilder.fileEdit;
|
| - expect(fileEdit.file, path);
|
| - expect(fileEdit.fileStamp, timeStamp);
|
| - }
|
| -}
|
| -
|
| -@reflectiveTest
|
| -class DartEditBuilderImplTest extends AbstractContextTest
|
| - with BuilderTestMixin {
|
| - @override
|
| - bool get enableNewAnalysisDriver => true;
|
| -
|
| - test_writeClassDeclaration_interfaces() async {
|
| - String path = '/test.dart';
|
| - addSource(path, 'class A {}');
|
| - DartType typeA = await _getType(path, 'A');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(0, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeClassDeclaration('C', interfaces: [typeA]);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(
|
| - edit.replacement, equalsIgnoringWhitespace('class C implements A { }'));
|
| - }
|
| -
|
| - test_writeClassDeclaration_isAbstract() async {
|
| - String path = '/test.dart';
|
| - addSource(path, '');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(0, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeClassDeclaration('C', isAbstract: true);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('abstract class C { }'));
|
| - }
|
| -
|
| - test_writeClassDeclaration_memberWriter() async {
|
| - String path = '/test.dart';
|
| - addSource(path, '');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(0, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeClassDeclaration('C',
|
| - memberWriter: () {
|
| - builder.write('/**/');
|
| - });
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('class C { /**/ }'));
|
| - }
|
| -
|
| - test_writeClassDeclaration_mixins_noSuperclass() async {
|
| - String path = '/test.dart';
|
| - addSource(path, 'class A {}');
|
| - DartType typeA = await _getType(path, 'A');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(0, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeClassDeclaration('C', mixins: [typeA]);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement,
|
| - equalsIgnoringWhitespace('class C extends Object with A { }'));
|
| - }
|
| -
|
| - test_writeClassDeclaration_mixins_superclass() async {
|
| - String path = '/test.dart';
|
| - addSource(path, 'class A {} class B {}');
|
| - DartType typeA = await _getType(path, 'A');
|
| - DartType typeB = await _getType(path, 'B');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(0, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeClassDeclaration('C', mixins: [typeB], superclass: typeA);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement,
|
| - equalsIgnoringWhitespace('class C extends A with B { }'));
|
| - }
|
| -
|
| - test_writeClassDeclaration_nameGroupName() async {
|
| - String path = '/test.dart';
|
| - addSource(path, '');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(0, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeClassDeclaration('C', nameGroupName: 'name');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('class C { }'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - expect(group.length, 1);
|
| - expect(group.positions, hasLength(1));
|
| - }
|
| -
|
| - test_writeClassDeclaration_superclass() async {
|
| - String path = '/test.dart';
|
| - addSource(path, 'class B {}');
|
| - DartType typeB = await _getType(path, 'B');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(0, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeClassDeclaration('C',
|
| - superclass: typeB, superclassGroupName: 'superclass');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('class C extends B { }'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - expect(group.length, 1);
|
| - expect(group.positions, hasLength(1));
|
| - }
|
| -
|
| - test_writeFieldDeclaration_initializerWriter() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeFieldDeclaration('f',
|
| - initializerWriter: () {
|
| - builder.write('e');
|
| - });
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('var f = e;'));
|
| - }
|
| -
|
| - test_writeFieldDeclaration_isConst() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeFieldDeclaration('f', isConst: true);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('const f;'));
|
| - }
|
| -
|
| - test_writeFieldDeclaration_isConst_isFinal() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeFieldDeclaration('f', isConst: true, isFinal: true);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('const f;'));
|
| - }
|
| -
|
| - test_writeFieldDeclaration_isFinal() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeFieldDeclaration('f', isFinal: true);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('final f;'));
|
| - }
|
| -
|
| - test_writeFieldDeclaration_isStatic() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeFieldDeclaration('f', isStatic: true);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('static var f;'));
|
| - }
|
| -
|
| - test_writeFieldDeclaration_nameGroupName() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeFieldDeclaration('f', nameGroupName: 'name');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('var f;'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - expect(group.length, 1);
|
| - expect(group.positions, hasLength(1));
|
| - Position position = group.positions[0];
|
| - expect(position.offset, equals(13));
|
| - }
|
| -
|
| - test_writeFieldDeclaration_type_typeGroupName() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {} class B {}';
|
| - addSource(path, content);
|
| - DartType typeA = await _getType(path, 'A');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeFieldDeclaration('f', type: typeA, typeGroupName: 'type');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('A f;'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - expect(group.length, 1);
|
| - expect(group.positions, hasLength(1));
|
| - Position position = group.positions[0];
|
| - expect(position.offset, equals(20));
|
| - }
|
| -
|
| - test_writeFunctionDeclaration_noReturnType_noParams_body() async {
|
| - String path = '/test.dart';
|
| - String content = '';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(0, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeFunctionDeclaration('fib',
|
| - bodyWriter: () {
|
| - builder.write('{ ... }');
|
| - });
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('fib() { ... }'));
|
| - }
|
| -
|
| - test_writeFunctionDeclaration_noReturnType_noParams_noBody() async {
|
| - String path = '/test.dart';
|
| - String content = '';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(0, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeFunctionDeclaration('fib', nameGroupName: 'name');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('fib() {}'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - expect(group.length, 3);
|
| - expect(group.positions, hasLength(1));
|
| - }
|
| -
|
| - test_writeFunctionDeclaration_noReturnType_params_noBody() async {
|
| - String path = '/test.dart';
|
| - String content = '';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(0, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeFunctionDeclaration('fib',
|
| - parameterWriter: () {
|
| - builder.write('p, q, r');
|
| - });
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('fib(p, q, r) {}'));
|
| - }
|
| -
|
| - test_writeFunctionDeclaration_returnType_noParams_noBody() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartType typeA = await _getType(path, 'A');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(0, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeFunctionDeclaration('fib',
|
| - returnType: typeA, returnTypeGroupName: 'type');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('A fib() => null;'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - expect(group.length, 1);
|
| - expect(group.positions, hasLength(1));
|
| - }
|
| -
|
| - test_writeGetterDeclaration_bodyWriter() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeGetterDeclaration('g',
|
| - bodyWriter: () {
|
| - builder.write('{}');
|
| - });
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('get g {}'));
|
| - }
|
| -
|
| - test_writeGetterDeclaration_isStatic() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeGetterDeclaration('g', isStatic: true);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('static get g => null;'));
|
| - }
|
| -
|
| - test_writeGetterDeclaration_nameGroupName() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeGetterDeclaration('g', nameGroupName: 'name');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('get g => null;'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - expect(group.length, 1);
|
| - expect(group.positions, hasLength(1));
|
| - Position position = group.positions[0];
|
| - expect(position.offset, equals(13));
|
| - }
|
| -
|
| - test_writeGetterDeclaration_returnType() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {} class B {}';
|
| - addSource(path, content);
|
| - DartType typeA = await _getType(path, 'A');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeGetterDeclaration('g',
|
| - returnType: typeA, returnTypeGroupName: 'returnType');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('A get g => null;'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - expect(group.length, 1);
|
| - expect(group.positions, hasLength(1));
|
| - Position position = group.positions[0];
|
| - expect(position.offset, equals(20));
|
| - }
|
| -
|
| - test_writeLocalVariableDeclaration_noType_initializer() async {
|
| - String path = '/test.dart';
|
| - String content = '''
|
| -void f() {
|
| -
|
| -}''';
|
| - addSource(path, content);
|
| - await driver.getResult(path);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(11, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeLocalVariableDeclaration('foo',
|
| - initializerWriter: () {
|
| - builder.write('null');
|
| - });
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('var foo = null;'));
|
| - }
|
| -
|
| - test_writeLocalVariableDeclaration_noType_noInitializer() async {
|
| - String path = '/test.dart';
|
| - String content = '''
|
| -void f() {
|
| -
|
| -}''';
|
| - addSource(path, content);
|
| - await driver.getResult(path);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(11, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeLocalVariableDeclaration('foo', nameGroupName: 'name');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('var foo;'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - expect(group.length, 3);
|
| - expect(group.positions, hasLength(1));
|
| - }
|
| -
|
| - test_writeLocalVariableDeclaration_noType_noInitializer_const() async {
|
| - String path = '/test.dart';
|
| - String content = '''
|
| -void f() {
|
| -
|
| -}''';
|
| - addSource(path, content);
|
| - await driver.getResult(path);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(11, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeLocalVariableDeclaration('foo', isConst: true);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('const foo;'));
|
| - }
|
| -
|
| - test_writeLocalVariableDeclaration_noType_noInitializer_final() async {
|
| - String path = '/test.dart';
|
| - String content = '''
|
| -void f() {
|
| -
|
| -}''';
|
| - addSource(path, content);
|
| - await driver.getResult(path);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(11, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeLocalVariableDeclaration('foo', isFinal: true);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('final foo;'));
|
| - }
|
| -
|
| - test_writeLocalVariableDeclaration_type_initializer() async {
|
| - String path = '/test.dart';
|
| - String content = '''
|
| -void f() {
|
| -
|
| -}
|
| -class MyClass {}''';
|
| - addSource(path, content);
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| -
|
| - ClassDeclaration A = unit.declarations[1];
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(11, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeLocalVariableDeclaration('foo',
|
| - initializerWriter: () {
|
| - builder.write('null');
|
| - }, type: A.element.type);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('MyClass foo = null;'));
|
| - }
|
| -
|
| - test_writeLocalVariableDeclaration_type_noInitializer() async {
|
| - String path = '/test.dart';
|
| - String content = '''
|
| -void f() {
|
| -
|
| -}
|
| -class MyClass {}''';
|
| - addSource(path, content);
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| -
|
| - ClassDeclaration A = unit.declarations[1];
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(11, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeLocalVariableDeclaration('foo',
|
| - type: A.element.type, typeGroupName: 'type');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('MyClass foo;'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - expect(group.length, 7);
|
| - expect(group.positions, hasLength(1));
|
| - }
|
| -
|
| - test_writeLocalVariableDeclaration_type_noInitializer_final() async {
|
| - String path = '/test.dart';
|
| - String content = '''
|
| -void f() {
|
| -
|
| -}
|
| -class MyClass {}''';
|
| - addSource(path, content);
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| -
|
| - ClassDeclaration A = unit.declarations[1];
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(11, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeLocalVariableDeclaration('foo',
|
| - isFinal: true, type: A.element.type, typeGroupName: 'type');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('final MyClass foo;'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - expect(group.length, 7);
|
| - expect(group.positions, hasLength(1));
|
| - }
|
| -
|
| - test_writeOverrideOfInheritedMember() async {
|
| - String path = '/test.dart';
|
| - String content = '''
|
| -class A {
|
| - A add(A a) => null;
|
| -}
|
| -class B extends A {
|
| -}''';
|
| - addSource(path, content);
|
| - ClassElement classA = await _getClassElement(path, 'A');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeOverrideOfInheritedMember(classA.methods[0]);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('''
|
| -@override
|
| -A add(A a) {
|
| - // TODO: implement add
|
| - return null;
|
| -}'''));
|
| - }
|
| -
|
| - test_writeParameterMatchingArgument() async {
|
| - String path = '/test.dart';
|
| - String content = r'''
|
| -f() {}
|
| -g() {
|
| - f(new A());
|
| -}
|
| -class A {}
|
| -''';
|
| - addSource(path, content);
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| - FunctionDeclaration g = unit.declarations[1];
|
| - BlockFunctionBody body = g.functionExpression.body;
|
| - ExpressionStatement statement = body.block.statements[0];
|
| - MethodInvocation invocation = statement.expression;
|
| - Expression argument = invocation.argumentList.arguments[0];
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(2, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeParameterMatchingArgument(argument, 0, new Set<String>());
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('A a'));
|
| - }
|
| -
|
| - test_writeParameters_named() async {
|
| - String path = '/test.dart';
|
| - String content = 'f(int i, {String s}) {}';
|
| - addSource(path, content);
|
| -
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| - FunctionDeclaration f = unit.declarations[0];
|
| - FormalParameterList parameters = f.functionExpression.parameters;
|
| - Iterable<ParameterElement> elements = parameters.parameters
|
| - .map(resolutionMap.elementDeclaredByFormalParameter);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeParameters(elements);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('(int i, {String s})'));
|
| - }
|
| -
|
| - test_writeParameters_positional() async {
|
| - String path = '/test.dart';
|
| - String content = 'f(int i, [String s]) {}';
|
| - addSource(path, content);
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| - FunctionDeclaration f = unit.declarations[0];
|
| - FormalParameterList parameters = f.functionExpression.parameters;
|
| - Iterable<ParameterElement> elements = parameters.parameters
|
| - .map(resolutionMap.elementDeclaredByFormalParameter);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeParameters(elements);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('(int i, [String s])'));
|
| - }
|
| -
|
| - test_writeParameters_required() async {
|
| - String path = '/test.dart';
|
| - String content = 'f(int i, String s) {}';
|
| - addSource(path, content);
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| - FunctionDeclaration f = unit.declarations[0];
|
| - FormalParameterList parameters = f.functionExpression.parameters;
|
| - Iterable<ParameterElement> elements = parameters.parameters
|
| - .map(resolutionMap.elementDeclaredByFormalParameter);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeParameters(elements);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('(int i, String s)'));
|
| - }
|
| -
|
| - test_writeParametersMatchingArguments_named() async {
|
| - String path = '/test.dart';
|
| - String content = '''
|
| -f(int i, String s) {
|
| - g(s, index: i);
|
| -}''';
|
| - addSource(path, content);
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| - FunctionDeclaration f = unit.declarations[0];
|
| - BlockFunctionBody body = f.functionExpression.body;
|
| - ExpressionStatement statement = body.block.statements[0];
|
| - MethodInvocation invocation = statement.expression;
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeParametersMatchingArguments(invocation.argumentList);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('String s, {int index}'));
|
| - }
|
| -
|
| - test_writeParametersMatchingArguments_required() async {
|
| - String path = '/test.dart';
|
| - String content = '''
|
| -f(int i, String s) {
|
| - g(s, i);
|
| -}''';
|
| - addSource(path, content);
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| - FunctionDeclaration f = unit.declarations[0];
|
| - BlockFunctionBody body = f.functionExpression.body;
|
| - ExpressionStatement statement = body.block.statements[0];
|
| - MethodInvocation invocation = statement.expression;
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeParametersMatchingArguments(invocation.argumentList);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('String s, int i'));
|
| - }
|
| -
|
| - test_writeParameterSource() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| - DartType typeA = await _getType(path, 'A');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeParameterSource(typeA, 'a');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('A a'));
|
| - }
|
| -
|
| - test_writeType_dynamic() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeType(resolutionMap
|
| - .elementDeclaredByCompilationUnit(unit)
|
| - .context
|
| - .typeProvider
|
| - .dynamicType);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace(''));
|
| - }
|
| -
|
| - test_writeType_genericType() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {} class B<E> {}';
|
| - addSource(path, content);
|
| - InterfaceType typeA = await _getType(path, 'A');
|
| - InterfaceType typeB = await _getType(path, 'B');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeType(typeB.instantiate([typeA]));
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('B<A>'));
|
| - }
|
| -
|
| - test_writeType_groupName() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {} class B extends A {} class C extends B {}';
|
| - addSource(path, content);
|
| - DartType typeC = await _getType(path, 'C');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeType(typeC, groupName: 'type');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('C'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - expect(group, isNotNull);
|
| - }
|
| -
|
| - test_writeType_groupName_addSupertypeProposals() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {} class B extends A {} class C extends B {}';
|
| - addSource(path, content);
|
| - DartType typeC = await _getType(path, 'C');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder)
|
| - .writeType(typeC, addSupertypeProposals: true, groupName: 'type');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('C'));
|
| -
|
| - List<LinkedEditGroup> linkedEditGroups =
|
| - builder.sourceChange.linkedEditGroups;
|
| - expect(linkedEditGroups, hasLength(1));
|
| - LinkedEditGroup group = linkedEditGroups[0];
|
| - List<LinkedEditSuggestion> suggestions = group.suggestions;
|
| - expect(suggestions, hasLength(4));
|
| - Iterable<String> values =
|
| - suggestions.map((LinkedEditSuggestion suggestion) {
|
| - expect(suggestion.kind, LinkedEditSuggestionKind.TYPE);
|
| - return suggestion.value;
|
| - });
|
| - expect(values, contains('Object'));
|
| - expect(values, contains('A'));
|
| - expect(values, contains('B'));
|
| - expect(values, contains('C'));
|
| - }
|
| -
|
| - test_writeType_null() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeType(null);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace(''));
|
| - }
|
| -
|
| - test_writeType_required_dynamic() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeType(
|
| - resolutionMap
|
| - .elementDeclaredByCompilationUnit(unit)
|
| - .context
|
| - .typeProvider
|
| - .dynamicType,
|
| - required: true);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('var'));
|
| - }
|
| -
|
| - test_writeType_required_notNull() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| - DartType typeA = await _getType(path, 'A');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeType(typeA, required: true);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('A'));
|
| - }
|
| -
|
| - test_writeType_required_null() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeType(null, required: true);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('var'));
|
| - }
|
| -
|
| - test_writeType_simpleType() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| - DartType typeA = await _getType(path, 'A');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilder).writeType(typeA);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('A'));
|
| - }
|
| -
|
| - test_writeTypes_empty() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilderImpl).writeTypes([]);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, isEmpty);
|
| - }
|
| -
|
| - test_writeTypes_noPrefix() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {} class B {}';
|
| - addSource(path, content);
|
| - DartType typeA = await _getType(path, 'A');
|
| - DartType typeB = await _getType(path, 'B');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilderImpl).writeTypes([typeA, typeB]);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('A, B'));
|
| - }
|
| -
|
| - test_writeTypes_null() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {}';
|
| - addSource(path, content);
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilderImpl).writeTypes(null);
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, isEmpty);
|
| - }
|
| -
|
| - test_writeTypes_prefix() async {
|
| - String path = '/test.dart';
|
| - String content = 'class A {} class B {}';
|
| - addSource(path, content);
|
| - DartType typeA = await _getType(path, 'A');
|
| - DartType typeB = await _getType(path, 'B');
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - builder.addInsertion(content.length - 1, (EditBuilder builder) {
|
| - (builder as DartEditBuilderImpl)
|
| - .writeTypes([typeA, typeB], prefix: 'implements ');
|
| - });
|
| - });
|
| - SourceEdit edit = getEdit(builder);
|
| - expect(edit.replacement, equalsIgnoringWhitespace('implements A, B'));
|
| - }
|
| -
|
| - Future<ClassElement> _getClassElement(String path, String name) async {
|
| - UnitElementResult result = await driver.getUnitElement(path);
|
| - return result.element.getType(name);
|
| - }
|
| -
|
| - Future<DartType> _getType(String path, String name) async {
|
| - ClassElement classElement = await _getClassElement(path, name);
|
| - return classElement.type;
|
| - }
|
| -}
|
| -
|
| -@reflectiveTest
|
| -class DartFileEditBuilderImplTest extends AbstractContextTest
|
| - with BuilderTestMixin {
|
| - @override
|
| - bool get enableNewAnalysisDriver => true;
|
| -
|
| - TypeProvider get typeProvider {
|
| - AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
|
| - context.sourceFactory = new SourceFactoryImpl([new DartUriResolver(sdk)]);
|
| - return new TestTypeProvider(context);
|
| - }
|
| -
|
| - test_convertFunctionFromSyncToAsync() async {
|
| - String path = '/test.dart';
|
| - addSource(path, 'String f() {}');
|
| -
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| - FunctionDeclaration function = unit.declarations[0];
|
| - FunctionBody body = function.functionExpression.body;
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - (builder as DartFileEditBuilder)
|
| - .convertFunctionFromSyncToAsync(body, typeProvider);
|
| - });
|
| - List<SourceEdit> edits = getEdits(builder);
|
| - expect(edits, hasLength(3));
|
| - expect(edits[0].replacement, equalsIgnoringWhitespace('async'));
|
| - expect(
|
| - edits[1].replacement, equalsIgnoringWhitespace("import 'dart:async';"));
|
| - expect(edits[2].replacement, equalsIgnoringWhitespace('Future<String>'));
|
| - }
|
| -
|
| - test_createEditBuilder() async {
|
| - String path = '/test.dart';
|
| - addSource(path, 'library test;');
|
| - int timeStamp = 65;
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, timeStamp, (FileEditBuilder builder) {
|
| - int offset = 4;
|
| - int length = 5;
|
| - DartEditBuilderImpl editBuilder = (builder as DartFileEditBuilderImpl)
|
| - .createEditBuilder(offset, length);
|
| - expect(editBuilder, new isInstanceOf<DartEditBuilder>());
|
| - SourceEdit sourceEdit = editBuilder.sourceEdit;
|
| - expect(sourceEdit.length, length);
|
| - expect(sourceEdit.offset, offset);
|
| - expect(sourceEdit.replacement, isEmpty);
|
| - });
|
| - }
|
| -
|
| - test_replaceTypeWithFuture() async {
|
| - String path = '/test.dart';
|
| - addSource(path, 'String f() {}');
|
| -
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| - FunctionDeclaration function = unit.declarations[0];
|
| - TypeAnnotation type = function.returnType;
|
| -
|
| - DartChangeBuilderImpl builder = new DartChangeBuilderImpl(driver);
|
| - await builder.addFileEdit(path, 1, (FileEditBuilder builder) {
|
| - (builder as DartFileEditBuilder)
|
| - .replaceTypeWithFuture(type, typeProvider);
|
| - });
|
| - List<SourceEdit> edits = getEdits(builder);
|
| - expect(edits, hasLength(2));
|
| - expect(
|
| - edits[0].replacement, equalsIgnoringWhitespace("import 'dart:async';"));
|
| - expect(edits[1].replacement, equalsIgnoringWhitespace('Future<String>'));
|
| - }
|
| -}
|
| -
|
| -@reflectiveTest
|
| -class DartLinkedEditBuilderImplTest extends AbstractContextTest {
|
| - @override
|
| - bool get enableNewAnalysisDriver => true;
|
| -
|
| - test_addSuperTypesAsSuggestions() async {
|
| - String path = '/test.dart';
|
| - addSource(
|
| - path,
|
| - '''
|
| -class A {}
|
| -class B extends A {}
|
| -class C extends B {}
|
| -''');
|
| - CompilationUnit unit = (await driver.getResult(path))?.unit;
|
| - ClassDeclaration classC = unit.declarations[2];
|
| - DartLinkedEditBuilderImpl builder = new DartLinkedEditBuilderImpl(null);
|
| - builder.addSuperTypesAsSuggestions(classC.element.type);
|
| - List<LinkedEditSuggestion> suggestions = builder.suggestions;
|
| - expect(suggestions, hasLength(4));
|
| - expect(suggestions.map((s) => s.value),
|
| - unorderedEquals(['Object', 'A', 'B', 'C']));
|
| - }
|
| -}
|
|
|