Пример #1
0
 public void ShouldResolveModuleAndInitializeSingleModule()
 {
     IServiceLocator containerFacade = new MockContainerAdapter();
     var service = new ModuleInitializer(containerFacade, new MockLogger());
     FirstTestModule.wasInitializedOnce = false;
     var info = CreateModuleInfo(typeof(FirstTestModule));
     service.Initialize(info);
     Assert.IsTrue(FirstTestModule.wasInitializedOnce);
 }
Пример #2
0
        public void ShouldLogModuleInitializeErrorsAndContinueLoading()
        {
            IServiceLocator containerFacade = new MockContainerAdapter();
            var logger = new MockLogger();
            var service = new CustomModuleInitializerService(containerFacade, logger);
            var invalidModule = CreateModuleInfo(typeof(InvalidModule));

            Assert.IsFalse(service.HandleModuleInitializerrorCalled);
            service.Initialize(invalidModule);
            Assert.IsTrue(service.HandleModuleInitializerrorCalled);
        }
 public void ShouldResolveModuleAndInitializeSingleModule()
 {
     IContainerFacade containerFacade = new MockContainerAdapter();
     var service = new ModuleLoader(containerFacade, new MockLogger());
     FirstTestModule.wasInitializedOnce = false;
     var info = new ModuleInfo(typeof(FirstTestModule).Assembly.Location, typeof(FirstTestModule).FullName, "FirstTestModule");
     service.Initialize(new[] { info });
     Assert.IsTrue(FirstTestModule.wasInitializedOnce);
 }
        public void InexistentAssemblyFileThrows()
        {
            IContainerFacade containerFacade = new MockContainerAdapter();
            var service = new TestableModuleInitializerService(containerFacade, new MockLogger());

            var moduleInfo = new ModuleInfo(typeof(FirstTestModule).Assembly.Location + "NotValid.dll", typeof(FirstTestModule).FullName, "InexistantModule");

            bool exceptionThrown = false;
            try
            {
                service.Initialize(new[] { moduleInfo });
            }
            catch (Exception ex)
            {
                Assert.AreEqual(typeof(ModuleLoadException), ex.GetType());
                StringAssert.Contains(ex.Message, "NotValid.dll");
                StringAssert.Contains(ex.Message, "not found");
                exceptionThrown = true;
            }
            Assert.IsTrue(exceptionThrown, "No exception thrown.");
        }
        public void DuplicateModuleNameThrows()
        {
            IContainerFacade containerFacade = new MockContainerAdapter();
            var service = new TestableModuleInitializerService(containerFacade, new MockLogger());

            var firstModuleInfo = new ModuleInfo(typeof(FirstTestModule).Assembly.Location, typeof(FirstTestModule).FullName, "SameName");
            var secondModuleInfo = new ModuleInfo(typeof(SecondTestModule).Assembly.Location, typeof(SecondTestModule).FullName, "SameName");

            bool exceptionThrown = false;
            try
            {
                service.Initialize(new[] { firstModuleInfo, secondModuleInfo });
            }
            catch (Exception ex)
            {
                Assert.AreEqual(typeof(ModuleLoadException), ex.GetType());
                StringAssert.Contains(ex.Message, "SameName");
                StringAssert.Contains(ex.Message, "duplicate");
                exceptionThrown = true;
            }
            Assert.IsTrue(exceptionThrown, "No exception thrown.");
        }
        public void ShouldNotLoadAssemblyThatHasAlreadyBeenLoaded()
        {
            IContainerFacade containerFacade = new MockContainerAdapter();
            var service = new TestableModuleInitializerService(containerFacade, new MockLogger());

            var firstModuleInfo = new ModuleInfo(typeof(FirstTestModule).Assembly.Location, typeof(FirstTestModule).FullName, "FirstTestModule");
            var secondModuleInfo = new ModuleInfo(typeof(SecondTestModule).Assembly.Location, typeof(SecondTestModule).FullName, "SecondTestModule");

            Assert.AreEqual(0, service.LoadedAssemblies.Count);

            service.Initialize(new[] { firstModuleInfo, secondModuleInfo });

            Assert.AreEqual(1, service.LoadedAssemblies.Count);
        }
        public void ShouldNotInitializeIfAlreadyLoaded()
        {
            ModuleLoadTracker.ModuleLoadStack.Clear();
            IContainerFacade containerFacade = new MockContainerAdapter();
            var service = new ModuleLoader(containerFacade, new MockLogger());
            FirstTestModule.wasInitializedOnce = false;
            SecondTestModule.wasInitializedOnce = false;
            var firstModuleInfo = new ModuleInfo(typeof(FirstTestModule).Assembly.Location, typeof(FirstTestModule).FullName, "FirstTestModule");

            service.Initialize(new[] { firstModuleInfo });
            Assert.AreEqual(1, ModuleLoadTracker.ModuleLoadStack.Count, "ModuleLoadStack should only contain 1 module");
            service.Initialize(new[] { firstModuleInfo });
            Assert.AreEqual(1, ModuleLoadTracker.ModuleLoadStack.Count, "ModuleLoadStack should not have module that has already been loaded");

        }
        public void ShouldLogModuleInitializationError()
        {
            IContainerFacade containerFacade = new MockContainerAdapter();
            var logger = new MockLogger();
            var service = new ModuleLoader(containerFacade, logger);
            ExceptionThrowingModule.wasInitializedOnce = false;
            var exceptionModule = new ModuleInfo(typeof(ExceptionThrowingModule).Assembly.Location, typeof(ExceptionThrowingModule).FullName, "ExceptionThrowingModule");

            try
            {
                service.Initialize(new[] { exceptionModule });
            }
            catch (ModuleLoadException)
            {
            }
            Assert.IsNotNull(logger.LastMessage);
            StringAssert.Contains(logger.LastMessage, "ExceptionThrowingModule");
        }
        public void ShouldLogModuleInitializeErrorsAndContinueLoading()
        {
            IContainerFacade containerFacade = new MockContainerAdapter();
            var logger = new MockLogger();
            var service = new CustomModuleInitializerService(containerFacade, logger);
            var invalidModule = new ModuleInfo(typeof(InvalidModule).Assembly.Location, typeof(InvalidModule).FullName, "InvalidModule");

            Assert.IsFalse(service.HandleModuleLoadErrorCalled);
            service.Initialize(new[] { invalidModule });
            Assert.IsTrue(service.HandleModuleLoadErrorCalled);
        }
        public void ShouldInitializeModulesInOrder()
        {
            IContainerFacade containerFacade = new MockContainerAdapter();
            var service = new ModuleLoader(containerFacade, new MockLogger());

            ModuleLoadTracker.ModuleLoadStack.Clear();
            var dependencyModule = new ModuleInfo(typeof(DependencyModule).Assembly.Location, typeof(DependencyModule).FullName, "DependencyModule");
            var dependantModule = new ModuleInfo(typeof(DependantModule).Assembly.Location, typeof(DependantModule).FullName, "DependantModule", new[] { "DependencyModule" });
            service.Initialize(new[] { dependantModule, dependencyModule });

            Assert.AreEqual(typeof(DependantModule), ModuleLoadTracker.ModuleLoadStack.Pop());
            Assert.AreEqual(typeof(DependencyModule), ModuleLoadTracker.ModuleLoadStack.Pop());

        }
Пример #11
0
        public void ShouldLogModuleInitializationError()
        {
            IServiceLocator containerFacade = new MockContainerAdapter();
            var logger = new MockLogger();
            var service = new ModuleInitializer(containerFacade, logger);
            ExceptionThrowingModule.wasInitializedOnce = false;
            var exceptionModule = CreateModuleInfo(typeof(ExceptionThrowingModule));

            try
            {
                service.Initialize(exceptionModule);
            }
            catch (ModuleInitializeException)
            {
            }

            Assert.IsNotNull(logger.LastMessage);
            StringAssert.Contains(logger.LastMessage, "ExceptionThrowingModule");
        }
        public void ShouldResolveAndInitializeMultipleModules()
        {
            IContainerFacade containerFacade = new MockContainerAdapter();
            var service = new ModuleLoader(containerFacade, new MockLogger());
            FirstTestModule.wasInitializedOnce = false;
            SecondTestModule.wasInitializedOnce = false;

            var firstModuleInfo = new ModuleInfo(typeof(FirstTestModule).Assembly.FullName, typeof(FirstTestModule).FullName, "FirstTestModule");
            var secondModuleInfo = new ModuleInfo(typeof(SecondTestModule).Assembly.FullName, typeof(SecondTestModule).FullName, "SecondTestModule");
            //var firstModuleInfo = new ModuleInfo(typeof(FirstTestModule).Assembly.Location, typeof(FirstTestModule).FullName, "FirstTestModule");
            //var secondModuleInfo = new ModuleInfo(typeof(SecondTestModule).Assembly.Location, typeof(SecondTestModule).FullName, "SecondTestModule");

            service.Initialize(new[] { firstModuleInfo, secondModuleInfo });
            Assert.IsTrue(FirstTestModule.wasInitializedOnce);
            Assert.IsTrue(SecondTestModule.wasInitializedOnce);
        }