// 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:code_builder/code_builder.dart'; import 'package:test/test.dart'; import 'common.dart'; void main() { useDartfmt(); final $LinkedHashMap = refer('LinkedHashMap', 'dart:collection'); final library = Library( (b) => b ..directives.add(Directive.export('../relative.dart')) ..directives.add(Directive.export('package:foo/foo.dart')) ..directives.add(Directive.part('lib.g.dart')) ..body.add( Field( (b) => b ..name = 'relativeRef' ..modifier = FieldModifier.final$ ..assignment = refer( 'Relative', '../relative.dart', ).newInstance([]).code, ), ) ..body.add( Field( (b) => b ..name = 'pkgRefFoo' ..modifier = FieldModifier.final$ ..assignment = refer( 'Foo', 'package:foo/foo.dart', ).newInstance([]).code, ), ) ..body.add( Field( (b) => b ..name = 'pkgRefBar' ..modifier = FieldModifier.final$ ..assignment = refer( 'Bar', 'package:foo/bar.dart', ).newInstance([]).code, ), ) ..body.add( Field( (b) => b ..name = 'collectionRef' ..modifier = FieldModifier.final$ ..assignment = $LinkedHashMap.newInstance([]).code, ), ), ); test('should emit a source file with imports in defined order', () { expect( library, equalsDart(r''' // ignore_for_file: no_leading_underscores_for_library_prefixes import '../relative.dart' as _i1; import 'package:foo/foo.dart' as _i2; import 'package:foo/bar.dart' as _i3; import 'dart:collection' as _i4; export '../relative.dart'; export 'package:foo/foo.dart'; part 'lib.g.dart'; final relativeRef = _i1.Relative(); final pkgRefFoo = _i2.Foo(); final pkgRefBar = _i3.Bar(); final collectionRef = _i4.LinkedHashMap();''', DartEmitter.scoped()), ); }); test('should emit a source file with ordered', () { expect( library, equalsDart( r''' // ignore_for_file: no_leading_underscores_for_library_prefixes import 'dart:collection' as _i4; import 'package:foo/bar.dart' as _i3; import 'package:foo/foo.dart' as _i2; import '../relative.dart' as _i1; export 'package:foo/foo.dart'; export '../relative.dart'; part 'lib.g.dart'; final relativeRef = _i1.Relative(); final pkgRefFoo = _i2.Foo(); final pkgRefBar = _i3.Bar(); final collectionRef = _i4.LinkedHashMap();''', DartEmitter.scoped(orderDirectives: true), ), ); }); }