From 5d52dfaa651df6554dfeda0c1f2fbb689183d95e Mon Sep 17 00:00:00 2001 From: Sergey Penkovsky Date: Fri, 3 Jul 2020 09:46:01 +0300 Subject: [PATCH] implemented toFactory8 method --- lib/resolvers/resolving_context.dart | 12 +++++- test/di_container_test.dart | 57 ++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 2 deletions(-) diff --git a/lib/resolvers/resolving_context.dart b/lib/resolvers/resolving_context.dart index e3e4366..1a71917 100644 --- a/lib/resolvers/resolving_context.dart +++ b/lib/resolvers/resolving_context.dart @@ -149,8 +149,16 @@ class ResolvingContext extends Resolver { */ ResolvingContext toFactory8( T Function(T1, T2, T3, T4, T5, T6, T7, T8) factory) { - // TODO: implement toFactory8 - throw UnimplementedError(); + Resolver resolver = FactoryResolver(() => factory( + _container.resolve(), + _container.resolve(), + _container.resolve(), + _container.resolve(), + _container.resolve(), + _container.resolve(), + _container.resolve(), + _container.resolve())); + return toResolver(resolver); } void _verify() { diff --git a/test/di_container_test.dart b/test/di_container_test.dart index f6f811c..6b56ec6 100644 --- a/test/di_container_test.dart +++ b/test/di_container_test.dart @@ -273,6 +273,37 @@ void main() { expect(container.resolve().f, f); expect(container.resolve().g, g); }); + + test("Bind to the factory resolves with 8 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(); + final h = HH(); + container.bind().toValue(a); + container.bind().toValue(b); + container.bind().toValue(c); + container.bind().toValue(d); + container.bind().toValue(e); + container.bind().toValue(f); + container.bind().toValue(g); + container.bind().toValue(h); + container.bind().toFactory8( + (a, b, c, d, e, f, g, h) => DependOnABCDEFGH(a, b, c, d, e, f, g, h)); + + 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); + expect(container.resolve().f, f); + expect(container.resolve().g, g); + expect(container.resolve().h, h); + }); } ResolverMock _makeResolver(T expectedValue) { @@ -311,6 +342,10 @@ abstract class G {} class GG implements G {} +abstract class H {} + +class HH implements H {} + class DependOnA { final A a; @@ -389,3 +424,25 @@ class DependOnABCDEFG { f != null && g != null); } + +class DependOnABCDEFGH { + final A a; + final B b; + final C c; + final D d; + final E e; + final F f; + final G g; + final H h; + + DependOnABCDEFGH( + this.a, this.b, this.c, this.d, this.e, this.f, this.g, this.h) + : assert(a != null && + b != null && + c != null && + d != null && + e != null && + f != null && + g != null && + h != null); +}