Пример #1
0
        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));
        }
Пример #3
0
        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);
        }
Пример #4
0
        public void ScreenPropertiesTest()
        {
            // - Arrange

            var screen = new ScreenStub();

            // - Act
            var screenName = screen.Name;

            // - Assert
            Assert.AreEqual(nameof(ScreenStub), screenName);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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));
        }