示例#1
0
        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");

            var firstModuleInfo  = new ModuleInfo(typeof(FirstTestModule).Assembly.FullName, typeof(FirstTestModule).FullName, "SameName");
            var secondModuleInfo = new ModuleInfo(typeof(SecondTestModule).Assembly.FullName, 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.");
        }
        private static void CreateAndConfigureServiceLocatorForViewModelLocator()
        {
            var container = new MockContainerAdapter();

            container.ResolvedInstances.Add(typeof(MockViewModel), new MockViewModel());
            ContainerLocator.ResetContainer();
            ContainerLocator.SetContainerExtension(() => container);
        }
示例#3
0
        public void ShouldLogModuleInitializeErrorsAndContinueLoading()
        {
            IContainerExtension containerFacade = new MockContainerAdapter();
            var service       = new CustomModuleInitializerService(containerFacade);
            var invalidModule = CreateModuleInfo(typeof(InvalidModule));

            Assert.False(service.HandleModuleInitializerrorCalled);
            service.Initialize(invalidModule);
            Assert.True(service.HandleModuleInitializerrorCalled);
        }
        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()
        {
            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);
        }
示例#6
0
        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);
        }
示例#7
0
        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);
        }
示例#8
0
        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);
        }
示例#9
0
        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());
        }
示例#10
0
        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");
        }
示例#11
0
        public void ShouldLogModuleInitializationError()
        {
            IContainerExtension containerFacade = new MockContainerAdapter();
            var service = new ModuleInitializer(containerFacade);

            ExceptionThrowingModule.wasInitializedOnce = false;
            var exceptionModule = CreateModuleInfo(typeof(ExceptionThrowingModule));

            try
            {
                service.Initialize(exceptionModule);
            }
            catch (ModuleInitializeException mie)
            {
                Assert.Contains("ExceptionThrowingModule", mie.Message);
            }
        }
示例#12
0
        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);
        }
示例#13
0
        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 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");
        }
示例#15
0
        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.");
        }