// 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 'package:analysis_server/protocol/protocol_generated.dart'; import 'package:analysis_server/src/edit/edit_domain.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../analysis_abstract.dart'; import '../mocks.dart'; void main() { defineReflectiveSuite(() { defineReflectiveTests(FormatTest); }); } @reflectiveTest class FormatTest extends AbstractAnalysisTest { @override void setUp() { super.setUp(); createProject(); handler = EditDomainHandler(server); } Future test_format_longLine() { var content = ''' fun(firstParam, secondParam, thirdParam, fourthParam) { if (firstParam.noNull && secondParam.noNull && thirdParam.noNull && fourthParam.noNull) {} } '''; addTestFile(content); return waitForTasksFinished().then((_) { var 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((_) { var 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(); var formatResult = _formatAt(0, 0); expect(formatResult.edits, isNotNull); expect(formatResult.edits, hasLength(1)); var 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((_) { var formatResult = _formatAt(0, 3); expect(formatResult.edits, isNotNull); expect(formatResult.edits, hasLength(1)); var 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((_) { var request = EditFormatParams(testFile, 0, 3).toRequest('0'); var response = handler.handleRequest(request); expect(response, isResponseFailure('0')); }); } EditFormatResult _formatAt(int selectionOffset, int selectionLength, {int? lineLength}) { var request = EditFormatParams(testFile, selectionOffset, selectionLength, lineLength: lineLength) .toRequest('0'); var response = handleSuccessfulRequest(request); return EditFormatResult.fromResponse(response); } }