mirror of
https://github.com/pese-git/cherrypick.git
synced 2026-01-24 05:25:19 +00:00
implemented toFactory2 method
This commit is contained in:
@@ -70,8 +70,9 @@ class ResolvingContext<T> extends Resolver {
|
|||||||
* Создать фабричный resolver с 2 зависимостями от контейнера
|
* Создать фабричный resolver с 2 зависимостями от контейнера
|
||||||
*/
|
*/
|
||||||
ResolvingContext<T> toFactory2<T1, T2>(T Function(T1, T2) factory) {
|
ResolvingContext<T> toFactory2<T1, T2>(T Function(T1, T2) factory) {
|
||||||
// TODO: implement toFactory2
|
Resolver<T> resolver = FactoryResolver<T>(
|
||||||
throw UnimplementedError();
|
() => factory(_container.resolve<T1>(), _container.resolve<T2>()));
|
||||||
|
return toResolver(resolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -135,19 +135,31 @@ void main() {
|
|||||||
|
|
||||||
test("Bind to the factory resolves with value", () {
|
test("Bind to the factory resolves with value", () {
|
||||||
final container = DiContainer();
|
final container = DiContainer();
|
||||||
final b = B();
|
final a = AA();
|
||||||
container.bind<A>().toFactory(() => b);
|
container.bind<A>().toFactory(() => a);
|
||||||
|
|
||||||
expect(container.resolve<A>(), b);
|
expect(container.resolve<A>(), a);
|
||||||
});
|
});
|
||||||
|
|
||||||
test("Bind to the factory resolves with value", () {
|
test("Bind to the factory resolves with value", () {
|
||||||
final container = DiContainer();
|
final container = DiContainer();
|
||||||
final b = B();
|
final a = AA();
|
||||||
container.bind<A>().toValue(b);
|
container.bind<A>().toValue(a);
|
||||||
container.bind<DependOnA>().toFactory1<A>((a) => DependOnA(a));
|
container.bind<DependOnA>().toFactory1<A>((a) => DependOnA(a));
|
||||||
|
|
||||||
expect(container.resolve<DependOnA>().a, b);
|
expect(container.resolve<DependOnA>().a, a);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Bind to the factory resolves with 2 value", () {
|
||||||
|
final container = DiContainer();
|
||||||
|
final a = AA();
|
||||||
|
final b = BB();
|
||||||
|
container.bind<A>().toValue(a);
|
||||||
|
container.bind<B>().toValue(b);
|
||||||
|
container.bind<DependOnAB>().toFactory2<A, B>((a, b) => DependOnAB(a, b));
|
||||||
|
|
||||||
|
expect(container.resolve<DependOnAB>().a, a);
|
||||||
|
expect(container.resolve<DependOnAB>().b, b);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,10 +173,21 @@ class ResolverMock<T> extends Mock implements Resolver<T> {}
|
|||||||
|
|
||||||
abstract class A {}
|
abstract class A {}
|
||||||
|
|
||||||
class B implements A {}
|
class AA implements A {}
|
||||||
|
|
||||||
|
abstract class B {}
|
||||||
|
|
||||||
|
class BB implements B {}
|
||||||
|
|
||||||
class DependOnA {
|
class DependOnA {
|
||||||
final A a;
|
final A a;
|
||||||
|
|
||||||
DependOnA(this.a) : assert(a != null);
|
DependOnA(this.a) : assert(a != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class DependOnAB {
|
||||||
|
final A a;
|
||||||
|
final B b;
|
||||||
|
|
||||||
|
DependOnAB(this.a, this.b) : assert(a != null && b != null);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user