private static void SetupMockedContainerForVerificationTests(Mock <IWindsorContainer> mockedContainer)
        {
            var mockedModuleInitializer = new Mock <IModuleInitializer>();
            var mockedModuleManager     = new Mock <IModuleManager>();
            var regionAdapterMappings   = new RegionAdapterMappings();
            var serviceLocatorAdapter   = new CastleWindsorServiceLocatorAdapter(mockedContainer.Object);
            var regionBehaviorFactory   = new RegionBehaviorFactory(serviceLocatorAdapter);

            mockedContainer.Setup(c => c.Resolve(typeof(IServiceLocator), (string)null)).Returns(serviceLocatorAdapter);

            //mockedContainer.Setup(c => c.RegisterInstance(It.IsAny<Type>(), It.IsAny<string>(), It.IsAny<object>(), It.IsAny<IInstanceLifetimeManager>()));

            mockedContainer.Setup(c => c.Resolve(typeof(IModuleCatalog), (string)null)).Returns(
                new ModuleCatalog());

            mockedContainer.Setup(c => c.Resolve(typeof(IModuleInitializer), (string)null)).Returns(
                mockedModuleInitializer.Object);

            mockedContainer.Setup(c => c.Resolve(typeof(IModuleManager), (string)null)).Returns(
                mockedModuleManager.Object);

            mockedContainer.Setup(c => c.Resolve(typeof(RegionAdapterMappings), (string)null)).Returns(
                regionAdapterMappings);

            mockedContainer.Setup(c => c.Resolve(typeof(SelectorRegionAdapter), (string)null)).Returns(
                new SelectorRegionAdapter(regionBehaviorFactory));

            mockedContainer.Setup(c => c.Resolve(typeof(ItemsControlRegionAdapter), (string)null)).Returns(
                new ItemsControlRegionAdapter(regionBehaviorFactory));

            mockedContainer.Setup(c => c.Resolve(typeof(ContentControlRegionAdapter), (string)null)).Returns(
                new ContentControlRegionAdapter(regionBehaviorFactory));
        }
        public void ModuleManagerRunCalled()
        {
            // Have to use a non-mocked container because of IsRegistered<> extension method, Registrations property,and ContainerRegistration
            var container = new WindsorContainer();

            var mockedModuleInitializer = new Mock <IModuleInitializer>();
            var mockedModuleManager     = new Mock <IModuleManager>();
            var regionAdapterMappings   = new RegionAdapterMappings();
            var serviceLocatorAdapter   = new CastleWindsorServiceLocatorAdapter(container);
            var regionBehaviorFactory   = new RegionBehaviorFactory(serviceLocatorAdapter);

            container.Register(Component.For(typeof(IServiceLocator)).Instance(serviceLocatorAdapter).LifeStyle.Transient);
            container.Register(Component.For(typeof(IModuleCatalog)).Instance(mockedModuleInitializer.Object).LifeStyle.Transient);
            container.Register(Component.For(typeof(IModuleInitializer)).Instance(new ModuleCatalog()).LifeStyle.Transient);
            container.Register(Component.For(typeof(IModuleManager)).Instance(mockedModuleManager.Object).LifeStyle.Transient);
            container.Register(Component.For(typeof(RegionAdapterMappings)).Instance(regionAdapterMappings).LifeStyle.Transient);


            //container.RegisterInstance<IServiceLocator>(serviceLocatorAdapter);
            //container.RegisterInstance<IModuleCatalog>(new ModuleCatalog());
            //container.RegisterInstance<IModuleInitializer>(mockedModuleInitializer.Object);
            //container.RegisterInstance<IModuleManager>(mockedModuleManager.Object);
            //container.RegisterInstance<RegionAdapterMappings>(regionAdapterMappings);

            container.RegisterType <RegionAdapterMappings, RegionAdapterMappings>(true);
            container.RegisterType <IRegionManager, RegionManager>(true);
            container.RegisterType <IRegionViewRegistry, EventAggregator>(true);
            container.RegisterType <IRegionViewRegistry, RegionViewRegistry>(true);
            container.RegisterType <IRegionBehaviorFactory, RegionBehaviorFactory>(true);
            container.RegisterType <IRegionNavigationJournalEntry, RegionNavigationJournalEntry>(true);
            container.RegisterType <IRegionNavigationJournal, RegionNavigationJournal>(true);
            container.RegisterType <IRegionNavigationService, RegionNavigationService>(true);
            container.RegisterType <IRegionNavigationContentLoader, CastleWindsorRegionNavigationContentLoader>(true);

            //container.RegisterSingleton(typeof(RegionAdapterMappings), typeof(RegionAdapterMappings));
            //container.RegisterSingleton(typeof(IRegionManager), typeof(RegionManager));
            //container.RegisterSingleton(typeof(IEventAggregator), typeof(EventAggregator));
            //container.RegisterSingleton(typeof(IRegionViewRegistry), typeof(RegionViewRegistry));
            //container.RegisterSingleton(typeof(IRegionBehaviorFactory), typeof(RegionBehaviorFactory));
            //container.RegisterSingleton(typeof(IRegionNavigationJournalEntry), typeof(RegionNavigationJournalEntry));
            //container.RegisterSingleton(typeof(IRegionNavigationJournal), typeof(RegionNavigationJournal));
            //container.RegisterSingleton(typeof(IRegionNavigationService), typeof(RegionNavigationService));
            //container.RegisterSingleton(typeof(IRegionNavigationContentLoader), typeof(global::Prism.Regions.CastleWindsorRegionNavigationContentLoader));

            container.RegisterInstance <SelectorRegionAdapter, SelectorRegionAdapter>(new SelectorRegionAdapter(regionBehaviorFactory));
            container.RegisterInstance <ItemsControlRegionAdapter, ItemsControlRegionAdapter>(new ItemsControlRegionAdapter(regionBehaviorFactory));
            container.RegisterInstance <ContentControlRegionAdapter, ContentControlRegionAdapter>(new ContentControlRegionAdapter(regionBehaviorFactory));

            //container.RegisterInstance<SelectorRegionAdapter>(new SelectorRegionAdapter(regionBehaviorFactory));
            //container.RegisterInstance<ItemsControlRegionAdapter>(new ItemsControlRegionAdapter(regionBehaviorFactory));
            //container.RegisterInstance<ContentControlRegionAdapter>(new ContentControlRegionAdapter(regionBehaviorFactory));

            var bootstrapper = new MockedContainerBootstrapper(container);

            bootstrapper.Run(false);

            mockedModuleManager.Verify(mm => mm.Run(), Times.Once());
        }
        public void ShouldForwardResolveToInnerContainer()
        {
            object myInstance = new object();

            IWindsorContainer container = new MockUnityContainer()
            {
                ResolveMethod = delegate
                {
                    return(myInstance);
                }
            };

            IServiceLocator containerAdapter = new CastleWindsorServiceLocatorAdapter(container);

            Assert.Same(myInstance, containerAdapter.GetInstance(typeof(object)));
        }
        public void ShouldForwardResolveAllToInnerContainer()
        {
            IEnumerable <object> list = new List <object> {
                new object(), new object()
            };

            IWindsorContainer container = new MockUnityContainer()
            {
                ResolveMethod = delegate
                {
                    return(list);
                }
            };

            IServiceLocator containerAdapter = new CastleWindsorServiceLocatorAdapter(container);

            Assert.Same(list, containerAdapter.GetAllInstances(typeof(object)));
        }