From 49aff8a483d423391919f3393b484ed552403d78 Mon Sep 17 00:00:00 2001 From: Sergey Penkovsky Date: Fri, 3 Jul 2020 09:31:35 +0300 Subject: [PATCH] implemented toFactory5 method --- lib/resolvers/resolving_context.dart | 9 +++++-- test/di_container_test.dart | 37 ++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/lib/resolvers/resolving_context.dart b/lib/resolvers/resolving_context.dart index 6277481..60fd9fa 100644 --- a/lib/resolvers/resolving_context.dart +++ b/lib/resolvers/resolving_context.dart @@ -104,8 +104,13 @@ class ResolvingContext extends Resolver { */ ResolvingContext toFactory5( T Function(T1, T2, T3, T4, T5) factory) { - // TODO: implement toFactory5 - throw UnimplementedError(); + Resolver resolver = FactoryResolver(() => factory( + _container.resolve(), + _container.resolve(), + _container.resolve(), + _container.resolve(), + _container.resolve())); + return toResolver(resolver); } /** diff --git a/test/di_container_test.dart b/test/di_container_test.dart index bdf00a2..054cd43 100644 --- a/test/di_container_test.dart +++ b/test/di_container_test.dart @@ -198,6 +198,28 @@ void main() { expect(container.resolve().c, c); expect(container.resolve().d, d); }); + + test("Bind to the factory resolves with 5 value", () { + final container = DiContainer(); + final a = AA(); + final b = BB(); + final c = CC(); + final d = DD(); + final e = EE(); + container.bind().toValue(a); + container.bind().toValue(b); + container.bind().toValue(c); + container.bind().toValue(d); + container.bind().toValue(e); + container.bind().toFactory5( + (a, b, c, d, e) => DependOnABCDE(a, b, c, d, e)); + + expect(container.resolve().a, a); + expect(container.resolve().b, b); + expect(container.resolve().c, c); + expect(container.resolve().d, d); + expect(container.resolve().e, e); + }); } ResolverMock _makeResolver(T expectedValue) { @@ -224,6 +246,10 @@ abstract class D {} class DD implements D {} +abstract class E {} + +class EE implements E {} + class DependOnA { final A a; @@ -255,3 +281,14 @@ class DependOnABCD { DependOnABCD(this.a, this.b, this.c, this.d) : assert(a != null && b != null && c != null && d != null); } + +class DependOnABCDE { + final A a; + final B b; + final C c; + final D d; + final E e; + + DependOnABCDE(this.a, this.b, this.c, this.d, this.e) + : assert(a != null && b != null && c != null && d != null && e != null); +}