| // 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 constMap = literalConstMap({ | |
| 'list': literalConstList([]), | |
| 'duration': refer('Duration').constInstance([]), | |
| }); | |
| test('expression', () { | |
| expect( | |
| constMap, | |
| equalsDart(r''' | |
| const {'list': [], 'duration': Duration(), }'''), | |
| ); | |
| }); | |
| test('assignConst', () { | |
| expect( | |
| constMap.assignConst('constField'), | |
| equalsDart( | |
| r''' | |
| const constField = {'list': [], 'duration': Duration(), }''', | |
| DartEmitter.scoped(), | |
| ), | |
| ); | |
| }); | |
| test('assign to declared constant', () { | |
| expect( | |
| declareConst('constField').assign(constMap), | |
| equalsDart( | |
| r''' | |
| const constField = {'list': [], 'duration': Duration(), }''', | |
| DartEmitter.scoped(), | |
| ), | |
| ); | |
| }); | |
| test('assign to declared non-constant', () { | |
| expect( | |
| declareVar('varField').assign(constMap), | |
| equalsDart( | |
| r''' | |
| var varField = const {'list': [], 'duration': Duration(), }''', | |
| DartEmitter.scoped(), | |
| ), | |
| ); | |
| }); | |
| final library = Library( | |
| (b) => b | |
| ..body.add( | |
| Field( | |
| (b) => b | |
| ..name = 'val1' | |
| ..modifier = FieldModifier.constant | |
| ..assignment = refer('ConstClass').constInstance([]).code, | |
| ), | |
| ) | |
| ..body.add( | |
| Field( | |
| (b) => b | |
| ..name = 'val2' | |
| ..modifier = FieldModifier.constant | |
| ..assignment = refer( | |
| 'ConstClass', | |
| ).constInstanceNamed('other', []).code, | |
| ), | |
| ), | |
| ); | |
| test('should emit a source file with imports in defined order', () { | |
| expect( | |
| library, | |
| equalsDart(r''' | |
| const val1 = ConstClass(); | |
| const val2 = ConstClass.other();'''), | |
| ); | |
| }); | |
| } |