implemented toFactory7 method

This commit is contained in:
Sergey Penkovsky
2020-07-03 09:41:50 +03:00
parent 19f4faab9b
commit af6c942ba5
2 changed files with 60 additions and 2 deletions

View File

@@ -133,8 +133,15 @@ class ResolvingContext<T> extends Resolver {
*/ */
ResolvingContext<T> toFactory7<T1, T2, T3, T4, T5, T6, T7>( ResolvingContext<T> toFactory7<T1, T2, T3, T4, T5, T6, T7>(
T Function(T1, T2, T3, T4, T5, T6, T7) factory) { T Function(T1, T2, T3, T4, T5, T6, T7) factory) {
// TODO: implement toFactory7 Resolver<T> resolver = FactoryResolver<T>(() => factory(
throw UnimplementedError(); _container.resolve<T1>(),
_container.resolve<T2>(),
_container.resolve<T3>(),
_container.resolve<T4>(),
_container.resolve<T5>(),
_container.resolve<T6>(),
_container.resolve<T7>()));
return toResolver(resolver);
} }
/** /**

View File

@@ -245,6 +245,34 @@ void main() {
expect(container.resolve<DependOnABCDEF>().e, e); expect(container.resolve<DependOnABCDEF>().e, e);
expect(container.resolve<DependOnABCDEF>().f, f); expect(container.resolve<DependOnABCDEF>().f, f);
}); });
test("Bind to the factory resolves with 7 value", () {
final container = DiContainer();
final a = AA();
final b = BB();
final c = CC();
final d = DD();
final e = EE();
final f = FF();
final g = GG();
container.bind<A>().toValue(a);
container.bind<B>().toValue(b);
container.bind<C>().toValue(c);
container.bind<D>().toValue(d);
container.bind<E>().toValue(e);
container.bind<F>().toValue(f);
container.bind<G>().toValue(g);
container.bind<DependOnABCDEFG>().toFactory7<A, B, C, D, E, F, G>(
(a, b, c, d, e, f, g) => DependOnABCDEFG(a, b, c, d, e, f, g));
expect(container.resolve<DependOnABCDEFG>().a, a);
expect(container.resolve<DependOnABCDEFG>().b, b);
expect(container.resolve<DependOnABCDEFG>().c, c);
expect(container.resolve<DependOnABCDEFG>().d, d);
expect(container.resolve<DependOnABCDEFG>().e, e);
expect(container.resolve<DependOnABCDEFG>().f, f);
expect(container.resolve<DependOnABCDEFG>().g, g);
});
} }
ResolverMock<T> _makeResolver<T>(T expectedValue) { ResolverMock<T> _makeResolver<T>(T expectedValue) {
@@ -279,6 +307,10 @@ abstract class F {}
class FF implements F {} class FF implements F {}
abstract class G {}
class GG implements G {}
class DependOnA { class DependOnA {
final A a; final A a;
@@ -338,3 +370,22 @@ class DependOnABCDEF {
e != null && e != null &&
f != null); f != null);
} }
class DependOnABCDEFG {
final A a;
final B b;
final C c;
final D d;
final E e;
final F f;
final G g;
DependOnABCDEFG(this.a, this.b, this.c, this.d, this.e, this.f, this.g)
: assert(a != null &&
b != null &&
c != null &&
d != null &&
e != null &&
f != null &&
g != null);
}