public void Both_params_are_supplied_through_factory() { // Arrange var container = new ContainerBuilder().AddParameterizedAutoFactoryExtension().Build(); var typeWithParameterlessCtor = new TypeWithParameterlessCtor(); var typeWithCtorWithOneDependencyParam = new TypeWithCtorWithOneDependencyParam( new TypeWithParameterlessCtor() ); // Act var create = container.Resolve <Func < TypeWithParameterlessCtor, TypeWithCtorWithOneDependencyParam, TypeWithCtorWithTwoDependencyParams> >(); var instance = create( typeWithParameterlessCtor, typeWithCtorWithOneDependencyParam); // Assert instance.Should().NotBeNull(); instance.TypeWithParameterlessCtor.Should().BeSameAs(typeWithParameterlessCtor); instance.TypeWithCtorWithOneDependencyParam .Should() .BeSameAs(typeWithCtorWithOneDependencyParam); }
public TypeWithCtorWithTwoDependencyParams( TypeWithParameterlessCtor typeWithParameterlessCtor, TypeWithCtorWithOneDependencyParam typeWithCtorWithOneDependencyParam) { TypeWithParameterlessCtor = typeWithParameterlessCtor; TypeWithCtorWithOneDependencyParam = typeWithCtorWithOneDependencyParam; }
public TypeWithCtorWithTwoDependencyParamsOfSameType( TypeWithParameterlessCtor typeWithParameterlessCtor, TypeWithCtorWithOneDependencyParam typeWithCtorWithOneDependencyParam0, TypeWithCtorWithOneDependencyParam typeWithCtorWithOneDependencyParam1) { TypeWithParameterlessCtor = typeWithParameterlessCtor; TypeWithCtorWithOneDependencyParam0 = typeWithCtorWithOneDependencyParam0; TypeWithCtorWithOneDependencyParam1 = typeWithCtorWithOneDependencyParam1; }
public void Overrides_only_param_of_ctor_of_product_type() { // Arrange var container = new ContainerBuilder().AddParameterizedAutoFactoryExtension().Build(); var typeWithParameterlessCtor = new TypeWithParameterlessCtor(); // Act var create = container.Resolve <Func < TypeWithParameterlessCtor, TypeWithCtorWithTwoDependencyParams> >(); var instance = create(typeWithParameterlessCtor); // Assert instance.TypeWithCtorWithOneDependencyParam .TypeWithParameterlessCtor .Should().NotBeSameAs(typeWithParameterlessCtor); }
public void One_param_of_another_type_creates_instance() { // Arrange var container = new ContainerBuilder().AddParameterizedAutoFactoryExtension().Build(); var param0 = new TypeWithParameterlessCtor(); // Act var create = container.Resolve <Func < TypeWithParameterlessCtor, TypeWithCtorWithTwoDependencyParamsOfSameType> >(); var instance = create(param0); // Assert instance.Should().NotBeNull(); instance.TypeWithParameterlessCtor.Should().BeSameAs(param0); instance.TypeWithCtorWithOneDependencyParam0.Should().NotBeNull(); instance.TypeWithCtorWithOneDependencyParam1.Should().NotBeNull(); }
public void Produces_same_instance_of_product_for_same_args() { // Arrange var container = new ContainerBuilder().AddParameterizedAutoFactoryExtension().Build(); container.RegisterType <TypeWithCtorWithTwoDependencyParams>(new ContainerControlledLifetimeManager()); var autofactory0 = container.Resolve <Func < TypeWithParameterlessCtor, TypeWithCtorWithTwoDependencyParams> >(); // Act var factoryArgument = new TypeWithParameterlessCtor(); var product0 = autofactory0(factoryArgument); var product1 = autofactory0(factoryArgument); // Assert product0.Should().BeSameAs(product1); }
public TypeWithCtorWithOneDependencyParam(TypeWithParameterlessCtor typeWithParameterlessCtor) { TypeWithParameterlessCtor = typeWithParameterlessCtor; }