// Copyright (c) 2017, 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:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../support/integration_tests.dart'; main() { defineReflectiveSuite(() { defineReflectiveTests(FormatTest); defineReflectiveTests(FormatTest_UseCFE); }); } @reflectiveTest class FormatTest extends AbstractAnalysisServerIntegrationTest { String formatTestSetup({bool withErrors: false}) { String pathname = sourcePath('test.dart'); if (withErrors) { String text = r''' class Class1 { int field void foo() { } } '''; writeFile(pathname, text); } else { String text = r''' class Class1 { int field; void foo() { } void bar() { } } '''; writeFile(pathname, text); } standardAnalysisSetup(); return pathname; } test_format() async { String pathname = formatTestSetup(); EditFormatResult result = await sendEditFormat(pathname, 0, 0); expect(result.edits, isNotEmpty); expect(result.selectionOffset, 0); expect(result.selectionLength, 0); } test_format_preserve_selection() async { String pathname = formatTestSetup(); // format with 'bar' selected int initialPosition = readFile(pathname).indexOf('bar()'); EditFormatResult result = await sendEditFormat(pathname, initialPosition, 'bar'.length); expect(result.edits, isNotEmpty); expect(result.selectionOffset, initialPosition - 3); expect(result.selectionLength, 'bar'.length); } test_format_with_errors() async { String pathname = formatTestSetup(withErrors: true); try { await sendEditFormat(pathname, 0, 0); fail('expected FORMAT_WITH_ERRORS'); } on ServerErrorMessage catch (message) { expect(message.error['code'], 'FORMAT_WITH_ERRORS'); } } } @reflectiveTest class FormatTest_UseCFE extends FormatTest { @override bool get useCFE => true; }