public void Resolve_AsSingletonWithoutImplementation_ShouldReturnTheSameInstance() { // Arrange var objectInfo = new ContainerInstance(typeof(ServiceStub), this.container); objectInfo.AsSingleton(); // Act var serviceStub1 = objectInfo.Resolve(); var serviceStub2 = objectInfo.Resolve(); // Assert Assert.AreSame(serviceStub1, serviceStub2); }
public void Resolve_SetFactoryWithArgumentsAsSingleton_ShouldCreateNewInstanceEachTime() { // Arrange var objectInfo = new ContainerInstance(this.registeredType, this.container); objectInfo.AsSingleton((arguments) => new ServiceStub()); // Act var serviceStub1 = objectInfo.Resolve(); var serviceStub2 = objectInfo.Resolve(); // Assert Assert.AreSame(serviceStub1, serviceStub2); }
public void Resolve_SetTypeImplementationAsSingletonWithGenericMethod_ShouldCreateTheSameInstance() { // Arrange var objectInfo = new ContainerInstance(this.registeredType, this.container); objectInfo.AsSingleton <ServiceStub>(); // Act var serviceStub1 = objectInfo.Resolve(); var serviceStub2 = objectInfo.Resolve(); // Assert Assert.AreSame(serviceStub1, serviceStub2); }
public void Resolve_SetTypeImplementation_ShouldCreateNewInstanceEachTime() { // Arrange var objectInfo = new ContainerInstance(this.registeredType, this.container); objectInfo.As(typeof(ServiceStub)); // Act var serviceStub1 = objectInfo.Resolve(); var serviceStub2 = objectInfo.Resolve(); // Assert Assert.AreNotSame(serviceStub1, serviceStub2); }
public void Resolve_TypeDoesntHaveSpecifiedConstructor_ThrowsException() { // Arrange var objectInfo = new ContainerInstance(typeof(ServiceWithoutInjectAttributeStub), this.container); // Act TestDelegate action = () => objectInfo.Resolve(); // Assert Assert.Throws <NotSupportedException>(action, string.Format(CultureInfo.CurrentCulture, InversionOfControlResources.ErrMsg_CannotFindConstructorForType, typeof(ServiceWithoutInjectAttributeStub))); }
public void Resolve_SetTypeImplementationAsSingletonWithGenericMethod_ShouldCreateNewInstance() { // Arrange var objectInfo = new ContainerInstance(this.registeredType, this.container); objectInfo.AsSingleton <ServiceStub>(); // Act var serviceStub = objectInfo.Resolve(); // Assert Assert.IsInstanceOf(typeof(ServiceStub), serviceStub); }
public void Resolve_SetInstanceAsSingleton_ShouldReturnTheSameInstance() { // Arrange var objectInfo = new ContainerInstance(this.registeredType, this.container); var instance = new ServiceStub(); objectInfo.AsSingleton(instance); // Act var serviceStub1 = objectInfo.Resolve(); // Assert Assert.AreSame(instance, serviceStub1); }
public void Resolve_SetFactoryWithArgumentsAsSingleton_ShouldCreateNewInstance() { // Arrange var objectInfo = new ContainerInstance(this.registeredType, this.container); var serviceStub = new ServiceStub(); objectInfo.AsSingleton((arguments) => serviceStub); // Act var result = objectInfo.Resolve(); // Assert Assert.AreEqual(serviceStub, result); }
public void Resolve_WithArguments_ShouldUseArguments() { // Arrange var objectInfo = new ContainerInstance(this.registeredType, this.container); const string A = "Test"; const int B = 10; objectInfo.As(typeof(ServiceWithConstructorStub)); // Act var result = (ServiceWithConstructorStub)objectInfo.Resolve(new object[] { A, B }); // Assert Assert.AreEqual(A, result.A); Assert.AreEqual(B, result.B); }
public void Resolve_TypeWithPrivateMethodInjection_ShouldInjectMethod() { // Arrange var serviceStub1 = new ServiceStub(); this.registrationContext.Register <IServiceStub1>().AsSingleton(serviceStub1); var objectInfo = new ContainerInstance(typeof(ServiceWithPrivateMethodInjection), this.container); objectInfo.As(typeof(ServiceWithPrivateMethodInjection)); // Act var result = (ServiceWithPrivateMethodInjection)objectInfo.Resolve(); // Assert Assert.AreEqual(serviceStub1, result.Child); }
public void Resolve_ResolveTypeWithDependency_ShouldAskContainerToResolveArgumentsForCtor() { // Arrange var serviceStub = new ServiceStub(); this.registrationContext.Register <IServiceStub1>().AsSingleton(serviceStub); var objectInfo = new ContainerInstance(typeof(ServiceWithDependencyStub), this.container); objectInfo.As(typeof(ServiceWithDependencyStub)); // Act var result = (ServiceWithDependencyStub)objectInfo.Resolve(); // Assert Assert.AreEqual(serviceStub, result.Child); }
public void InjectionRule_TwoTypesRegistered_ResolvedWithTypeFromRule() { // Arrange var serviceStub1 = new ServiceStub(); var serviceStub2 = new ServiceStub(); this.registrationContext.Register <IServiceStub1>().AsSingleton(serviceStub1); this.registrationContext.Register <IServiceStub2>().AsSingleton(serviceStub2); var objectInfo = new ContainerInstance(typeof(ServiceWithStubBaseInjection), this.container); objectInfo.As(typeof(ServiceWithStubBaseInjection)); // Act objectInfo.InjectionRule(typeof(IServiceStubBase), typeof(IServiceStub2)); var stub = (ServiceWithStubBaseInjection)objectInfo.Resolve(); // Assert Assert.AreEqual(serviceStub2, stub.Child); }
public void Resolve_TypeDoesntHaveSpecifiedConstructor_ThrowsException() { // Arrange var objectInfo = new ContainerInstance(typeof(ServiceWithoutInjectAttributeStub), this.container); // Act TestDelegate action = () => objectInfo.Resolve(); // Assert Assert.Throws<NotSupportedException>(action, string.Format(CultureInfo.CurrentCulture, InversionOfControlResources.ErrMsg_CannotFindConstructorForType, typeof(ServiceWithoutInjectAttributeStub))); }
public void Resolve_SetTypeImplementation_ShouldCreateNewInstance() { // Arrange var objectInfo = new ContainerInstance(this.registeredType, this.container); objectInfo.As(typeof(ServiceStub)); // Act var serviceStub = objectInfo.Resolve(); // Assert Assert.IsInstanceOf(typeof(ServiceStub), serviceStub); }
public void Resolve_SetTypeImplementationAsSingletonWithGenericMethod_ShouldCreateTheSameInstance() { // Arrange var objectInfo = new ContainerInstance(this.registeredType, this.container); objectInfo.AsSingleton<ServiceStub>(); // Act var serviceStub1 = objectInfo.Resolve(); var serviceStub2 = objectInfo.Resolve(); // Assert Assert.AreSame(serviceStub1, serviceStub2); }
public void Resolve_SetFactory_ShouldCreateNewInstanceEachTime() { // Arrange var objectInfo = new ContainerInstance(this.registeredType, this.container); objectInfo.As(() => new ServiceStub()); // Act var serviceStub1 = objectInfo.Resolve(); var serviceStub2 = objectInfo.Resolve(); // Assert Assert.AreNotSame(serviceStub1, serviceStub2); }
public void Resolve_SetFactory_ShouldCreateNewInstance() { // Arrange var objectInfo = new ContainerInstance(this.registeredType, this.container); var serviceStub = new ServiceStub(); objectInfo.As(() => serviceStub); // Act var result = objectInfo.Resolve(); // Assert Assert.AreEqual(serviceStub, result); }
public void Resolve_ResolveTypeWithDependency_ShouldAskContainerToResolveArgumentsForCtor() { // Arrange var serviceStub = new ServiceStub(); this.registrationContext.Register<IServiceStub1>().AsSingleton(serviceStub); var objectInfo = new ContainerInstance(typeof(ServiceWithDependencyStub), this.container); objectInfo.As(typeof(ServiceWithDependencyStub)); // Act var result = (ServiceWithDependencyStub)objectInfo.Resolve(); // Assert Assert.AreEqual(serviceStub, result.Child); }
public void Resolve_TypeWithPrivateMethodInjection_ShouldInjectMethod() { // Arrange var serviceStub1 = new ServiceStub(); this.registrationContext.Register<IServiceStub1>().AsSingleton(serviceStub1); var objectInfo = new ContainerInstance(typeof(ServiceWithPrivateMethodInjection), this.container); objectInfo.As(typeof(ServiceWithPrivateMethodInjection)); // Act var result = (ServiceWithPrivateMethodInjection)objectInfo.Resolve(); // Assert Assert.AreEqual(serviceStub1, result.Child); }
public void InjectionRule_TwoTypesRegistered_ResolvedWithTypeFromRule() { // Arrange var serviceStub1 = new ServiceStub(); var serviceStub2 = new ServiceStub(); this.registrationContext.Register<IServiceStub1>().AsSingleton(serviceStub1); this.registrationContext.Register<IServiceStub2>().AsSingleton(serviceStub2); var objectInfo = new ContainerInstance(typeof(ServiceWithStubBaseInjection), this.container); objectInfo.As(typeof(ServiceWithStubBaseInjection)); // Act objectInfo.InjectionRule(typeof(IServiceStubBase), typeof(IServiceStub2)); var stub = (ServiceWithStubBaseInjection)objectInfo.Resolve(); // Assert Assert.AreEqual(serviceStub2, stub.Child); }