public HierarchicalLifetimeManagerTest()
 {
     parent = new FsContainer();
     child1 = parent.CreateChildContainer();
     child2 = parent.CreateChildContainer();
     parent.For<ILogger>().Use<Logger>(new HierarchicalLifetimeManager());
     parent.For<DisposableObject>()
         .Use<DisposableObject>(new HierarchicalLifetimeManager());
 }
Exemple #2
0
        public void TestForUseByServiceResolve()
        {
            // Act
            var container = new FsContainer();
            container.For<IValidator>().Use<Validator>();

            // Arrange
            var validator = container.Resolve<IValidator>();

            // Assert
            Assert.AreNotEqual(validator, null);
        }
Exemple #3
0
        public void TestBaseClassInheritanceAreAssignableTypes()
        {
            // Act
            var container = new FsContainer();
            container.For<Logger>().Use<DbLogger>();

            // Arrange
            var logger = container.Resolve<Logger>();

            // Assert
            Assert.IsNotNull(logger);
            Assert.IsInstanceOfType(logger, typeof(DbLogger));
        }
        public void TestTransientLifetimeInstanceAlwaysDifferent()
        {
            // Act
            var container = new FsContainer();
            container.For<ILogger>().Use<Logger>(new TransientLifetimeManager());

            // Arrange
            var logger = container.Resolve<ILogger>();
            var logger1 = container.Resolve<ILogger>();

            // Assert
            Assert.IsNotNull(logger);
            Assert.IsNotNull(logger1);
            Assert.AreNotSame(logger, logger1);
        }
        public void TestContainerControlledLifetimeInstanceAlwaysSame()
        {
            // Act
            var container = new FsContainer();
            container.For<ILogger>().Use<Logger>(new ContainerControlledLifetimeManager());

            // Arrange
            var logger = container.Resolve<ILogger>();
            var logger1 = container.Resolve<ILogger>();

            // Assert
            Assert.IsNotNull(logger);
            Assert.IsNotNull(logger1);
            Assert.AreSame(logger, logger1);
        }
Exemple #6
0
        public void TestWithSingleConstructorArgumentResolve()
        {
            // Act
            const string argument = "Hello, world.";

            var container = new FsContainer();
            container.For<IRule>().Use<Rule>()
                .WithConstructorArgument("message", argument);

            // Arrange
            var instance = container.Resolve<IRule>();

            // Assert
            Assert.IsNotNull(instance, null);
            Assert.AreEqual(instance.GetMessage(), argument);
            Assert.AreEqual(instance.GetNumber(), 0);
        }
Exemple #7
0
        public void TestRecursiveSingleArgumentResolve()
        {
            // Act
            var container = new FsContainer();
            container.For<ICustomerService>().Use<CustomerService>();
            container.For<IValidator>().Use<Validator>();

            // Arrange
            var instance = container.Resolve<ICustomerService>();

            // Assert
            Assert.AreNotEqual(instance, null);
        }
Exemple #8
0
        public void TestRecursiveMultipleArgumentsResolve()
        {
            // Act
            var container = new FsContainer();
            container.For<ICustomerService>().Use<CustomerService>();
            container.For<IContractService>().Use<ContractService>();
            container.For<IDocumentService>().Use<DocumentService>();
            container.For<IValidator>().Use<Validator>();
            container.For<IContractRepository>().Use<ContractRepository>();

            // Arrange
            var instance = container.Resolve<ContractController>();

            // Assert
            Assert.AreNotEqual(instance, null);
        }
Exemple #9
0
        public void TestNotAssignableInterfaceTypesThrowNotAssignableException()
        {
            // Act
            var container = new FsContainer();
            container.For<ILogger>().Use<Validator>();

            // Arrange
        }
Exemple #10
0
        public void TestNotAssignableBaseClassTypesThrowNotAssignableException()
        {
            // Act
            var container = new FsContainer();
            container.For<DbLogger>().Use<Logger>();

            // Arrange
        }
Exemple #11
0
        public void TestNonExistingParametersDoesNotAffectToInstanceCreatingResolve()
        {
            // Act
            const string message = "Hello, world.";

            var container = new FsContainer();
            container.For<IRule>().Use<Rule>()
                .WithConstructorArgument("message", message)
                .WithConstructorArgument("messageException", message);

            // Arrange
            var instance = container.Resolve<IRule>();

            // Assert
            Assert.IsNotNull(instance, null);
            Assert.AreSame(instance.GetMessage(), message);
        }
Exemple #12
0
        public void TestNextWithArgumentOverridePreviousResolve()
        {
            // Act
            const string msgFirst = "Hello, world.";
            const string msgLast = "Good night, world.";
            const int numFirst = 42;
            const int numLast = 7;

            var container = new FsContainer();
            container.For<IRule>().Use<Rule>()
                .WithConstructorArgument("message", msgFirst)
                .WithConstructorArgument("message", msgLast)
                .WithConstructorArgument("number", numFirst)
                .WithConstructorArgument("number", numLast);

            // Arrange
            var instance = container.Resolve<IRule>();

            // Assert
            Assert.IsNotNull(instance, null);
            Assert.AreEqual(instance.GetMessage(), msgLast);
            Assert.AreEqual(instance.GetNumber(), numLast);
        }