| // 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.dart'; | |
| import 'package:analysis_server/protocol/protocol_generated.dart'; | |
| import 'package:analysis_server/src/edit/edit_domain.dart'; | |
| import 'package:analyzer_plugin/protocol/protocol_common.dart'; | |
| import 'package:test/test.dart'; | |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; | |
| import '../analysis_abstract.dart'; | |
| import '../mocks.dart'; | |
| main() { | |
| defineReflectiveSuite(() { | |
| defineReflectiveTests(FormatTest); | |
| }); | |
| } | |
| @reflectiveTest | |
| class FormatTest extends AbstractAnalysisTest { | |
| @override | |
| void setUp() { | |
| super.setUp(); | |
| createProject(); | |
| handler = new EditDomainHandler(server); | |
| } | |
| Future test_format_longLine() { | |
| String content = ''' | |
| fun(firstParam, secondParam, thirdParam, fourthParam) { | |
| if (firstParam.noNull && secondParam.noNull && thirdParam.noNull && fourthParam.noNull) {} | |
| } | |
| '''; | |
| addTestFile(content); | |
| return waitForTasksFinished().then((_) { | |
| EditFormatResult formatResult = _formatAt(0, 3, lineLength: 100); | |
| expect(formatResult.edits, isNotNull); | |
| expect(formatResult.edits, hasLength(0)); | |
| expect(formatResult.selectionOffset, equals(0)); | |
| expect(formatResult.selectionLength, equals(3)); | |
| }); | |
| } | |
| Future test_format_noOp() { | |
| // Already formatted source | |
| addTestFile(''' | |
| main() { | |
| int x = 3; | |
| } | |
| '''); | |
| return waitForTasksFinished().then((_) { | |
| EditFormatResult formatResult = _formatAt(0, 3); | |
| expect(formatResult.edits, isNotNull); | |
| expect(formatResult.edits, hasLength(0)); | |
| }); | |
| } | |
| Future test_format_noSelection() async { | |
| addTestFile(''' | |
| main() { int x = 3; } | |
| '''); | |
| await waitForTasksFinished(); | |
| EditFormatResult formatResult = _formatAt(0, 0); | |
| expect(formatResult.edits, isNotNull); | |
| expect(formatResult.edits, hasLength(1)); | |
| SourceEdit edit = formatResult.edits[0]; | |
| expect(edit.replacement, equals(''' | |
| main() { | |
| int x = 3; | |
| } | |
| ''')); | |
| expect(formatResult.selectionOffset, equals(0)); | |
| expect(formatResult.selectionLength, equals(0)); | |
| } | |
| Future test_format_simple() { | |
| addTestFile(''' | |
| main() { int x = 3; } | |
| '''); | |
| return waitForTasksFinished().then((_) { | |
| EditFormatResult formatResult = _formatAt(0, 3); | |
| expect(formatResult.edits, isNotNull); | |
| expect(formatResult.edits, hasLength(1)); | |
| SourceEdit edit = formatResult.edits[0]; | |
| expect(edit.replacement, equals(''' | |
| main() { | |
| int x = 3; | |
| } | |
| ''')); | |
| expect(formatResult.selectionOffset, equals(0)); | |
| expect(formatResult.selectionLength, equals(3)); | |
| }); | |
| } | |
| Future test_format_withErrors() { | |
| addTestFile(''' | |
| main() { int x = | |
| '''); | |
| return waitForTasksFinished().then((_) { | |
| Request request = new EditFormatParams(testFile, 0, 3).toRequest('0'); | |
| Response response = handler.handleRequest(request); | |
| expect(response, isResponseFailure('0')); | |
| }); | |
| } | |
| EditFormatResult _formatAt(int selectionOffset, int selectionLength, | |
| {int lineLength}) { | |
| Request request = new EditFormatParams( | |
| testFile, selectionOffset, selectionLength, | |
| lineLength: lineLength) | |
| .toRequest('0'); | |
| Response response = handleSuccessfulRequest(request); | |
| return new EditFormatResult.fromResponse(response); | |
| } | |
| } |