public void OpenScreenUseScreenLocation_WhenNoMatchingScreenIsOpen_CreatesNewScreen() { var conductor = CreateConductor(); var firstSubject = new BaseSubject { Value = "First Subject" }; var differentSubject = new BaseSubject { Value = "Different Subject" }; conductor.OpenScreen( ScreenFactory .For <MultipleInstancesScreen>(Locator) ); conductor.OpenScreen( ScreenFactory .WithSubject(firstSubject) .For <LocatableScreen>(Locator) ); conductor.OpenScreen( ScreenFactory .WithSubject(differentSubject) .For <LocatableScreen>(Locator) ); CollectionAssert.AreEqual( new[] { firstSubject, differentSubject }, GetSubjectsOfOpenScreens(conductor) ); }
public void AddScreen_CallsInitialize() { Object subject = new Object(); TestScreen s = Collection.AddScreen( ScreenFactory.WithSubject(subject).For <TestScreen>(Locator) ); Assert.AreEqual(subject, s.Subject); }
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) ); }
public void OpenScreenUseScreenLocation_WhenScreenFactoryIsDowncasted_Works() { var conductor = CreateConductor(); var singleSubject = new BaseSubject { Value = "Single Subject" }; conductor.OpenScreen( ScreenFactory .WithSubject(singleSubject) .For <DerivedLocatableScreen>(Locator) ); IScreenFactory <IScreenBase> downcasted = ScreenFactory .WithSubject(singleSubject) .For <DerivedLocatableScreen>(Locator); conductor.OpenScreen(downcasted); CollectionAssert.AreEqual( new[] { singleSubject }, GetSubjectsOfOpenScreens(conductor) ); }
public void OpenScreenUseScreenLocation_WhenAttributeIsOnBaseClass_Works() { var conductor = CreateConductor(); var singleSubject = new BaseSubject { Value = "Single Subject" }; conductor.OpenScreen( ScreenFactory .WithSubject(singleSubject) .For <DerivedLocatableScreen>(Locator) ); conductor.OpenScreen( ScreenFactory .WithSubject(singleSubject) .For <DerivedLocatableScreen>(Locator) ); CollectionAssert.AreEqual( new[] { singleSubject }, GetSubjectsOfOpenScreens(conductor) ); }
public void OpenScreenUseScreenLocation_WhenMatchingScreenIsAlreadyOpen_ActivatesScreen() { var conductor = CreateConductor(); var singleSubject = new BaseSubject { 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) ); }