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_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_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_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_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_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_SetTypeImplementationAsSingleton_ShouldCreateTheSameInstance()
        {
            // Arrange
            var objectInfo = new ContainerInstance(this.registeredType, this.container);
            objectInfo.AsSingleton(typeof(ServiceStub));

            // Act
            var serviceStub1 = objectInfo.Resolve();
            var serviceStub2 = objectInfo.Resolve();

            // Assert
            Assert.AreSame(serviceStub1, serviceStub2);
        }
        public void Resolve_SetTypeImplementationAsSingleton_ShouldCreateNewInstance()
        {
            // Arrange
            var objectInfo = new ContainerInstance(this.registeredType, this.container);
            objectInfo.AsSingleton(typeof(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_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_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_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);
        }