public void Context_Inherits_Parent_Injector()
        {
            AddRootToStage();

            parentContext
            .Install(typeof(SupportParentFinderExtension))
            .Install(typeof(TestSupportViewStateWatcherExtension))
            .Install(typeof(ModularityExtension))
            .Configure(new ContextView(parentView));

            childContext
            .Install(typeof(TestSupportViewStateWatcherExtension))
            .Install(typeof(ModularityExtension))
            .Install(typeof(SupportParentFinderExtension))
            .Configure(new ContextView(childView));

            ContainerRegistry cr = new ContainerRegistry();

            cr.SetParentFinder(new SupportParentFinder());

            parentContext.injector.Map(typeof(ContainerRegistry)).ToValue(cr);
            childContext.injector.Map(typeof(ContainerRegistry)).ToValue(cr);

            cr.AddContainer(parentView);
            cr.AddContainer(childView);

            root.AddChild(parentView);
            parentView.AddChild(childView);

            Assert.That(childContext.injector.parent, Is.EqualTo(parentContext.injector));
        }
Пример #2
0
        public void Mediator_Is_Removed_From_Factory_When_View_Leaves_Stage()
        {
            int    callCount  = 0;
            object actualView = null;

            manager.ViewRemoved += (Action <object>) delegate(object eventView) {
                callCount++;
                actualView = eventView;
            };
            SupportView      view    = new SupportView();
            IMediatorMapping mapping = new MediatorMapping(CreateTypeFilter(new Type[1] {
                typeof(SupportView)
            }), typeof(CallbackMediator));
            object mediator = injector.InstantiateUnmapped(typeof(CallbackMediator));

            container.AddChild(view);
            manager.AddMediator(mediator, view, mapping);
            container.RemoveChild(view);

            Assert.That(callCount, Is.EqualTo(1));
            Assert.That(actualView, Is.EqualTo(view));
        }
        public void mediator_is_created_if_guard_allows_it()
        {
            mediatorMap.Map(typeof(SupportView)).ToMediator(typeof(ExampleMediatorWatcher)).WithGuards(typeof(OnlyIfViewHasChildrenGuard));
            SupportView view = new SupportView();

            view.AddChild(new SupportView());
            mediatorMap.Mediate(view);

            List <string> expectedNotifications = new List <string> {
                "ExampleMediatorWatcher"
            };

            Assert.That(expectedNotifications, Is.EqualTo(mediatorWatcher.Notifications).AsCollection);
        }
        public void Multiple_Depths_Of_Children_Only_Inherit_The_First_Parents_Injector()
        {
            AddRootToStage();

            parentContext
            .Install(typeof(TestSupportViewStateWatcherExtension))
            .Install(typeof(SupportParentFinderExtension))
            .Install(typeof(ModularityExtension))
            .Configure(new ContextView(parentView));

            childContext
            .Install(typeof(TestSupportViewStateWatcherExtension))
            .Install(typeof(ModularityExtension))
            .Install(typeof(SupportParentFinderExtension))
            .Configure(new ContextView(childView));


            SupportView anotherChildView    = new SupportView();
            IContext    anotherChildContext = new Context()
                                              .Install(typeof(TestSupportViewStateWatcherExtension))
                                              .Install(typeof(StageSyncExtension))
                                              .Install(typeof(ContextViewExtension))
                                              .Install(typeof(ModularityExtension))
                                              .Install(typeof(SupportParentFinderExtension))
                                              .Configure(new ContextView(anotherChildView));


            ContainerRegistry cr = new ContainerRegistry();

            parentContext.injector.Map(typeof(ContainerRegistry)).ToValue(cr);
            childContext.injector.Map(typeof(ContainerRegistry)).ToValue(cr);
            anotherChildContext.injector.Map(typeof(ContainerRegistry)).ToValue(cr);

            cr.AddContainer(parentView);
            cr.AddContainer(childView);
            cr.AddContainer(anotherChildView);

            root.AddChild(parentView);
            parentView.AddChild(childView);
            childView.AddChild(anotherChildView);

            Assert.That(childContext.injector.parent, Is.EqualTo(parentContext.injector));
            Assert.That(anotherChildContext.injector.parent, Is.EqualTo(childContext.injector));
            Assert.That(anotherChildContext.injector.parent, Is.Not.EqualTo(parentContext.injector));
        }
        /*============================================================================*/
        /* Public Functions                                                           */
        /*============================================================================*/

        public void Hook()
        {
            view.AddChild(new SupportView());
        }