public void Initialize_WhenCompileTimeTypeOfSubjectIsInterface_CallsInitializeOverloadOfRuntimeType()
        {
            var subject = new DerivedSubject();
            var screen  = new TestScreen <BaseSubject>(Aggregator);

            Initialize(screen, (ISubject)subject);
            Assert.AreEqual(subject, screen.LastSubject);
        }
        public void Initialize_WhenScreenExpectsInterface_CallsInitialize()
        {
            var subject = new DerivedSubject();
            var screen  = new ScreenWithInterfaceSubject(Aggregator);

            Initialize(screen, subject);
            Assert.AreEqual(subject, screen.LastSubject);
        }
        public void Initialize_WithSubjectOfDerivedType_CallsInitialize()
        {
            var subject = new DerivedSubject();
            var screen  = new TestScreen <BaseSubject>(Aggregator);

            Initialize(screen, subject);
            Assert.AreEqual(subject, screen.LastSubject);
        }
        public void Initialize_WhenScreenDoesNotImplementInterface_CallsInitializeOnChildren()
        {
            var subject = new DerivedSubject();
            var parent  = new ParentScreenWithoutHandler(Aggregator);
            var child   = new TestScreen <BaseSubject>(Aggregator);

            parent.Children.Attach(child);

            Initialize(parent, subject);
            Assert.AreEqual(subject, child.LastSubject, "Initialize was not called on child.");
        }
        public void Initialize_WithSubjectOfDerivedType_CallsInitializeOnScreenAndItsChildren()
        {
            var subject = new DerivedSubject();
            var parent  = new ParentScreenWithHandler <DerivedSubject>(Aggregator);
            var child   = new TestScreen <BaseSubject>(Aggregator);

            parent.Children.Attach(child);

            Initialize(parent, subject);
            Assert.AreEqual(subject, parent.LastSubject, "Initialize was not called on parent.");
            Assert.AreEqual(subject, child.LastSubject, "Initialize was not called on child.");
        }
        public void Initialize_WhenScreenImplementsINeedsInitialization_CallsVariousImplementations()
        {
            var subject = new DerivedSubject();
            var screen  = new InitializableDerivedScreen(Aggregator);

            Initialize(screen, subject);

            Assert.AreEqual(subject, screen.DerivedSubject);
            Assert.AreEqual(subject, screen.BaseSubject);
            Assert.AreEqual(subject, screen.ISubject);
            Assert.AreEqual(1, screen.GeneralInitializeDerivedInvocations);
            Assert.AreEqual(1, screen.GeneralInitializeBaseInvocations);
        }
Esempio n. 7
0
        public void OpenScreenUseScreenLocation_WhenScreenImplementsLocatableScreenForBaseClass_ActivatesScreen()
        {
            var conductor     = CreateConductor();
            var singleSubject = new DerivedSubject {
                Value = "Single Subject"
            };

            conductor.OpenScreen(
                ScreenFactory
                .WithSubject(singleSubject)
                .For <LocatableScreen>(Locator)
                );

            conductor.OpenScreen(
                ScreenFactory
                .WithSubject(singleSubject)
                .For <LocatableScreen>(Locator)
                );

            CollectionAssert.AreEqual(
                new[] { singleSubject },
                GetSubjectsOfOpenScreens(conductor)
                );
        }