public void NavigateForwardTest() { // - Arrange var screen = new ScreenStub(); var registryMock = new Mock <IScreenRegistry>(); var navManagerMock = new Mock <INavigationManager>(); var commandsFactoryMock = new Mock <ICommandsFactory>(); var router = new DefaultRouter( registryMock.Object, navManagerMock.Object, commandsFactoryMock.Object ); // - Act router.Forward(screen); // - Assert commandsFactoryMock.Verify( it => it.Forward(screen), Times.Once); navManagerMock.Verify( it => it.SendCommands(It.IsAny <IEnumerable <INavCommand> >()), Times.Once); }
public void UnsupportedReplaceFactoryTest() { // - Arrange var registry = new ScreenRegistry(); var screenStack = new ScreenStack(); var specs = new NavigatorSpecification(false, false, false); var screenA = new Mock <Screen>().Object; var screenB = new ScreenStub(); var screenBResolver = new Mock <IScreenResolver>().Object; registry.Register(typeof(ScreenStub), screenBResolver); screenStack.Push(screenB, screenA, screenA); var cf = new DefaultCommandsFactory(registry); // - Act var commands = cf.ReplaceScreen(screenStack, specs, screenB); // - Assert Assert.AreEqual(2, commands.Count); Assert.IsInstanceOf <BackNavCommand>( commands.ElementAtOrDefault(0)); Assert.IsInstanceOf <ForwardNavCommand>( commands.ElementAtOrDefault(1)); }
public void ReplaceScreenTest() { // - Arrange var screen = new ScreenStub(); var registryMock = new Mock <IScreenRegistry>(); var navManagerMock = new Mock <INavigationManager>(); var commandsFactoryMock = new Mock <ICommandsFactory>(); var router = new DefaultRouter( registryMock.Object, navManagerMock.Object, commandsFactoryMock.Object ); // - Act router.Replace(screen); // - Assert commandsFactoryMock.Verify( it => it.ReplaceScreen( It.IsAny <IEnumerable <Screen> >(), It.IsAny <NavigatorSpecification>(), screen), Times.Once); navManagerMock.Verify( it => it.SendCommands(It.IsAny <IEnumerable <INavCommand> >()), Times.Once); }
public void ScreenPropertiesTest() { // - Arrange var screen = new ScreenStub(); // - Act var screenName = screen.Name; // - Assert Assert.AreEqual(nameof(ScreenStub), screenName); }
public void ResolveNonExistentScreenFromRegistry() { // - Arrange var screen = new ScreenStub(); var screenRegistry = new ScreenRegistry(); // - Act & Assert var exception = Assert.Throws <UnregisteredScreenException>( () => screenRegistry.Resolve(screen)); Assert.AreEqual(screen, exception !.Screen); }
public void PushFirstScreenTest() { // - Arrange var screen = new ScreenStub(); var screenStack = new ScreenStack(); // - Act screenStack.Push(screen); // - Assert Assert.IsTrue(screenStack.IsRoot); Assert.AreEqual(1, screenStack.Count); Assert.AreSame(screen, screenStack.CurrentScreen); }
public void ResolveScreenFromRegistryTest() { // - Arrange var screenClass = typeof(ScreenStub); var screen = new ScreenStub(); var screenResolver = new Mock <IScreenResolver>().Object; var screenRegistry = new ScreenRegistry(); screenRegistry.Register(screenClass, screenResolver); // - Act var entry = screenRegistry.Resolve(screen); // - Assert Assert.IsNotNull(entry); Assert.AreSame(screenResolver, entry.Resolver); Assert.IsFalse(entry.IsRoot); }
public void ApplyForwardCommandTest() { // - Arrange var screen = new ScreenStub(); var screenStack = new ScreenStack(); var screenResorverStub = new Mock <IScreenResolver>().Object; var navigatorMock = new Mock <Navigator>(); var command = new ForwardNavCommand(screen, screenResorverStub); // - Act command.Apply(navigatorMock.Object, screenStack); // - Assert CollectionAssert.Contains(screenStack, screen); navigatorMock.Verify( it => it.Forward(screen, screenResorverStub), Times.Once); }
public void ApplyBackToRootCommandTest() { // - Arrange var screenStack = new ScreenStack(); var rootScreen = new ScreenStub(); screenStack.Push(rootScreen, new ScreenStub()); var navigatorMock = new Mock <Navigator>(); var command = new BackToRootNavCommand(); // - Act command.Apply(navigatorMock.Object, screenStack); // - Assert Assert.IsTrue(screenStack.IsRoot); Assert.AreEqual(1, screenStack.Count); Assert.AreEqual(rootScreen, screenStack.CurrentScreen); navigatorMock.Verify(it => it.BackToRoot(), Times.Once); }
public void UnsupportedBackToScreenFactoryTest() { // - Arrange var registry = new ScreenRegistry(); var screenStack = new ScreenStack(); var specs = new NavigatorSpecification(false, false, false); var screenA = new Mock <Screen>().Object; var screenB = new ScreenStub(); screenStack.Push(screenA, screenB, screenA, screenA); var cf = new DefaultCommandsFactory(registry); // - Act var commands = cf.BackToScreen(screenStack, specs, typeof(ScreenStub)); // - Assert Assert.AreEqual(2, commands.Count); CollectionAssert.AllItemsAreInstancesOfType(commands, typeof(BackNavCommand)); }
public void ForwardFactoryTest() { // - Arrange var screen = new ScreenStub(); var resolver = new Mock <IScreenResolver>().Object; var registry = new ScreenRegistry(); registry.Register(typeof(ScreenStub), resolver); var cf = new DefaultCommandsFactory(registry); // - Act var commands = cf.Forward(screen); // - Assert Assert.AreEqual(1, commands.Count); var command = commands.FirstOrDefault(); Assert.IsNotNull(command); Assert.IsInstanceOf <ForwardNavCommand>(command); }
public void SupportedBackToRootFactoryTest() { // - Arrange var registry = new ScreenRegistry(); var screenStack = new ScreenStack(); var specs = new NavigatorSpecification(false, true, false); var screenA = new Mock <Screen>().Object; var screenB = new ScreenStub(); screenStack.Push(screenB, screenA, screenA); var cf = new DefaultCommandsFactory(registry); // - Act var commands = cf.BackToRoot(screenStack, specs); // - Assert Assert.AreEqual(1, commands.Count); var command = commands.FirstOrDefault(); Assert.IsInstanceOf <BackToRootNavCommand>(command); }
public void ApplyBackToScreenCommandTest() { // - Arrange var screenType = typeof(ScreenStub); var screenStack = new ScreenStack(); var expectedScreen = new ScreenStub(); var screen = new Mock <Screen>().Object; screenStack.Push(expectedScreen, screen, screen); var navigatorMock = new Mock <Navigator>(); var command = new BackToScreenNavCommand(screenType); // - Act command.Apply(navigatorMock.Object, screenStack); // - Assert Assert.AreEqual(1, screenStack.Count); Assert.AreEqual(expectedScreen, screenStack.CurrentScreen); navigatorMock.Verify(it => it.BackToScreen(expectedScreen), Times.Once); }
public void ApplyReplaceScreenNavCommandTest() { // - Arrange var screen = new ScreenStub(); var resolverStub = new Mock <IScreenResolver>().Object; var screenStack = new ScreenStack(); var oldScreen = new ScreenStub(); screenStack.Push(oldScreen); var navigatorMock = new Mock <Navigator>(); var command = new ReplaceScreenNavCommand(screen, resolverStub); // - Act command.Apply(navigatorMock.Object, screenStack); // - Assert Assert.AreNotEqual(oldScreen, screenStack.CurrentScreen); Assert.AreEqual(screen, screenStack.CurrentScreen); Assert.AreEqual(1, screenStack.Count); navigatorMock.Verify(it => it.Replace(screen, resolverStub), Times.Once); }
public void SupportedReplaceFactoryTest() { // - Arrange var registry = new ScreenRegistry(); var screenStack = new ScreenStack(); var specs = new NavigatorSpecification(false, false, true); var screenA = new Mock <Screen>().Object; var screenB = new ScreenStub(); var screenBResolver = new Mock <IScreenResolver>().Object; registry.Register(typeof(ScreenStub), screenBResolver); screenStack.Push(screenB, screenA, screenA); var cf = new DefaultCommandsFactory(registry); // - Act var commands = cf.ReplaceScreen(screenStack, specs, screenB); // - Assert Assert.AreEqual(1, commands.Count); CollectionAssert.AllItemsAreInstancesOfType(commands, typeof(ReplaceScreenNavCommand)); }