blob: 129f02cd13c8bd61fde8bc8d72b8d5969818f56d [file] [log] [blame]
// 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())),
);
});
}