| // 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(); | |
| test('should generate a complex generated file', () { | |
| // Imports from an existing Dart library. | |
| final $App = refer('App', 'package:app/app.dart'); | |
| final $Module = refer('Module', 'package:app/module.dart'); | |
| final $Thing = refer('Thing', 'package:app/thing.dart'); | |
| final clazz = ClassBuilder() | |
| ..name = 'Injector' | |
| ..implements.add($App) | |
| ..fields.add( | |
| Field( | |
| (b) => b | |
| ..modifier = FieldModifier.final$ | |
| ..name = '_module' | |
| ..type = $Module.type, | |
| ), | |
| ) | |
| ..constructors.add( | |
| Constructor( | |
| (b) => b | |
| ..requiredParameters.add( | |
| Parameter( | |
| (b) => b | |
| ..name = '_module' | |
| ..toThis = true, | |
| ), | |
| ), | |
| ), | |
| ) | |
| ..methods.add( | |
| Method( | |
| (b) => b | |
| ..name = 'getThing' | |
| ..body = $Thing.newInstance([ | |
| refer('_module').property('get1').call([]), | |
| refer('_module').property('get2').call([]), | |
| ]).code | |
| ..returns = $Thing | |
| ..annotations.add(refer('override')), | |
| ), | |
| ); | |
| expect( | |
| clazz.build(), | |
| equalsDart(r''' | |
| class Injector implements App { | |
| Injector(this._module); | |
| final Module _module; | |
| @override | |
| Thing getThing() => Thing(_module.get1(), _module.get2(), ); | |
| } | |
| '''), | |
| ); | |
| expect( | |
| clazz.build(), | |
| equalsDart(r''' | |
| class Injector implements _i1.App { | |
| Injector(this._module); | |
| final _i2.Module _module; | |
| @override | |
| _i3.Thing getThing() => _i3.Thing(_module.get1(), _module.get2(), ); | |
| } | |
| ''', DartEmitter(allocator: Allocator.simplePrefixing())), | |
| ); | |
| }); | |
| } |