From 19f4faab9b1e8caadebc29cc2a3fcd3c449f40b1 Mon Sep 17 00:00:00 2001 From: Sergey Penkovsky Date: Fri, 3 Jul 2020 09:37:09 +0300 Subject: [PATCH] implemented toFactory6 method --- lib/resolvers/resolving_context.dart | 10 ++++-- test/di_container_test.dart | 46 ++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/lib/resolvers/resolving_context.dart b/lib/resolvers/resolving_context.dart index 60fd9fa..50ae780 100644 --- a/lib/resolvers/resolving_context.dart +++ b/lib/resolvers/resolving_context.dart @@ -118,8 +118,14 @@ class ResolvingContext extends Resolver { */ ResolvingContext toFactory6( T Function(T1, T2, T3, T4, T5, T6) factory) { - // TODO: implement toFactory6 - throw UnimplementedError(); + Resolver resolver = FactoryResolver(() => factory( + _container.resolve(), + _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 054cd43..8cccd79 100644 --- a/test/di_container_test.dart +++ b/test/di_container_test.dart @@ -220,6 +220,31 @@ void main() { expect(container.resolve().d, d); expect(container.resolve().e, e); }); + + test("Bind to the factory resolves with 6 value", () { + final container = DiContainer(); + final a = AA(); + final b = BB(); + final c = CC(); + final d = DD(); + final e = EE(); + final f = FF(); + 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().toFactory6( + (a, b, c, d, e, f) => DependOnABCDEF(a, b, c, d, e, f)); + + 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); + }); } ResolverMock _makeResolver(T expectedValue) { @@ -250,6 +275,10 @@ abstract class E {} class EE implements E {} +abstract class F {} + +class FF implements F {} + class DependOnA { final A a; @@ -292,3 +321,20 @@ class DependOnABCDE { DependOnABCDE(this.a, this.b, this.c, this.d, this.e) : assert(a != null && b != null && c != null && d != null && e != null); } + +class DependOnABCDEF { + final A a; + final B b; + final C c; + final D d; + final E e; + final F f; + + DependOnABCDEF(this.a, this.b, this.c, this.d, this.e, this.f) + : assert(a != null && + b != null && + c != null && + d != null && + e != null && + f != null); +}