| // Copyright (c) 2023, 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/src/g3/utilities.dart'; |
| import 'package:dart_style/dart_style.dart'; |
| import 'package:test/test.dart'; |
| |
| void main() { |
| group('format', () { |
| test('pass', () { |
| var contents = ''' |
| void f(int m){ |
| if (m > 3){ |
| print(3); |
| }else { |
| print(0); |
| } |
| } |
| '''; |
| var formattedContents = ''' |
| void f(int m) { |
| if (m > 3) { |
| print(3); |
| } else { |
| print(0); |
| } |
| } |
| '''; |
| var result = format(contents); |
| expect(result, formattedContents); |
| }); |
| |
| test('fail', () { |
| var contents = ''' |
| void f(){ |
| var x |
| } |
| '''; |
| try { |
| format(contents); |
| } catch (e) { |
| expect(e.runtimeType, FormatterException); |
| } |
| }); |
| }); |
| |
| group('organize imports', () { |
| test('pass', () { |
| var contents = ''' |
| import 'dart:io'; |
| import 'dart:async'; |
| |
| Future a; |
| '''; |
| |
| var sortedContents = ''' |
| import 'dart:async'; |
| import 'dart:io'; |
| |
| Future a; |
| '''; |
| |
| var result = sortDirectives(contents); |
| expect(result.content, sortedContents); |
| expect(result.errors.isEmpty, true); |
| }); |
| |
| test('fail', () { |
| var contents = ''' |
| import 'dart:io' |
| import 'dart:async'; |
| |
| Future a; |
| '''; |
| var result = sortDirectives(contents); |
| expect(result.content, contents); |
| expect(result.errors.length, 1); |
| }); |
| test('keep comments at start', () { |
| var contents = ''' |
| // File comment |
| // This is a very important file. |
| |
| // ignore_for_file: unused_imports |
| |
| import 'dart:io'; |
| import 'dart:async' as async; |
| |
| Future a; |
| '''; |
| |
| var sortedContents = ''' |
| // File comment |
| // This is a very important file. |
| |
| // ignore_for_file: unused_imports |
| |
| import 'dart:async' as async; |
| import 'dart:io'; |
| |
| Future a; |
| '''; |
| |
| var result = sortDirectives(contents); |
| expect(result.content, sortedContents); |
| expect(result.errors.isEmpty, true); |
| }); |
| |
| test('remove duplicates', () { |
| var contents = ''' |
| import 'dart:io'; |
| import 'dart:io'; |
| import 'dart:async' as async; |
| |
| Future a; |
| '''; |
| |
| var sortedContents = ''' |
| import 'dart:async' as async; |
| import 'dart:io'; |
| |
| Future a; |
| '''; |
| |
| var result = sortDirectives(contents); |
| expect(result.content, sortedContents); |
| expect(result.errors.isEmpty, true); |
| }); |
| |
| test('with prefix', () { |
| var contents = ''' |
| import 'dart:io'; |
| import 'package:a.b/c.dart'; |
| import 'package:a.b/c.dart' deferred as a; |
| |
| Future a; |
| '''; |
| |
| var sortedContents = ''' |
| import 'dart:io'; |
| |
| import 'package:a.b/c.dart' deferred as a; |
| import 'package:a.b/c.dart'; |
| |
| Future a; |
| '''; |
| |
| var result = sortDirectives(contents); |
| expect(result.content, sortedContents); |
| expect(result.errors.isEmpty, true); |
| }); |
| |
| test('with prefix unchanged', () { |
| var contents = ''' |
| import 'dart:io'; |
| import 'package:a.b/c.dart' deferred as a; |
| import 'package:a.b/c.dart'; |
| |
| Future a; |
| '''; |
| |
| var sortedContents = ''' |
| import 'dart:io'; |
| |
| import 'package:a.b/c.dart' deferred as a; |
| import 'package:a.b/c.dart'; |
| |
| Future a; |
| '''; |
| |
| var result = sortDirectives(contents); |
| expect(result.content, sortedContents); |
| expect(result.errors.isEmpty, true); |
| }); |
| |
| test('with 2 line directive', () { |
| var contents = ''' |
| import 'dart:io'; |
| import 'package:a.b/c.dart' as a; |
| import 'package:a.b/c.dart' |
| hide Hello; |
| |
| Future a; |
| '''; |
| |
| var sortedContents = ''' |
| import 'dart:io'; |
| |
| import 'package:a.b/c.dart' |
| hide Hello; |
| import 'package:a.b/c.dart' as a; |
| |
| Future a; |
| '''; |
| |
| var result = sortDirectives(contents); |
| expect(result.content, sortedContents); |
| expect(result.errors.isEmpty, true); |
| }); |
| }); |
| } |