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); }
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) ); }