diff --git a/lib/resolvers/resolving_context.dart b/lib/resolvers/resolving_context.dart index 50ae780..e3e4366 100644 --- a/lib/resolvers/resolving_context.dart +++ b/lib/resolvers/resolving_context.dart @@ -133,8 +133,15 @@ class ResolvingContext extends Resolver { */ ResolvingContext toFactory7( T Function(T1, T2, T3, T4, T5, T6, T7) factory) { - // TODO: implement toFactory7 - throw UnimplementedError(); + Resolver resolver = FactoryResolver(() => factory( + _container.resolve(), + _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 8cccd79..f6f811c 100644 --- a/test/di_container_test.dart +++ b/test/di_container_test.dart @@ -245,6 +245,34 @@ void main() { expect(container.resolve().e, e); expect(container.resolve().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().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().toFactory7( + (a, b, c, d, e, f, g) => DependOnABCDEFG(a, b, c, d, e, f, g)); + + 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); + }); } ResolverMock _makeResolver(T expectedValue) { @@ -279,6 +307,10 @@ abstract class F {} class FF implements F {} +abstract class G {} + +class GG implements G {} + class DependOnA { final A a; @@ -338,3 +370,22 @@ class DependOnABCDEF { e != 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); +}