public void NextLayerCommand_Execute(int layerNumber, int nextLayerHit, int expectedCurrentLayerIndex)
        {
            //Arrange
            var keyboardLayout = CreateLayers(layerNumber);
            var layoutTemplate = new List <KeyTemplate>();

            for (int i = 0; i < 1; i++)
            {
                layoutTemplate.Add(new KeyTemplate(i, i, 54, 81));
            }

            var mockLayoutService = new Mock <ILayoutService>();

            mockLayoutService.Setup(l => l.SupportsGeometry(null)).Returns(true);
            mockLayoutService.Setup(l => l.GetLayoutTemplate(null)).ReturnsAsync(layoutTemplate);
            var mockWindowService   = new Mock <IWindowService>();
            var mockSettingsService = new Mock <ISettingsService>();

            mockSettingsService.SetupProperty(s => s.EZLayout, keyboardLayout);

            //Act
            var displayLayoutViewModel = new DisplayLayoutViewModel(mockWindowService.Object, mockLayoutService.Object, mockSettingsService.Object);

            for (int i = 0; i < nextLayerHit; i++)
            {
                displayLayoutViewModel.NextLayerCommand.Execute(null);
            }

            //Assert
            Assert.Equal(expectedCurrentLayerIndex, displayLayoutViewModel.CurrentLayerIndex);
        }
        public void LostFocusCommand_CanExecute(bool isPinned)
        {
            //Arrange
            var mockWindowService = new Mock <IWindowService>();

            mockWindowService.Setup(w => w.CloseWindow <DisplayLayoutWindow>()).Verifiable();
            var mockLayoutService   = new Mock <ILayoutService>();
            var mockSettingsService = new Mock <ISettingsService>();

            //Act
            var displayLayoutViewModel = new DisplayLayoutViewModel(mockWindowService.Object, mockLayoutService.Object, mockSettingsService.Object);

            displayLayoutViewModel.IsWindowPinned = isPinned;
            displayLayoutViewModel.LostFocusCommand.Execute(null);

            //Assert
            if (isPinned)
            {
                mockWindowService.Verify(w => w.CloseWindow <DisplayLayoutWindow>(), Times.Never);
            }
            else
            {
                mockWindowService.Verify(w => w.CloseWindow <DisplayLayoutWindow>(), Times.Once);
            }
        }
        public void ScrollLayerCommand_Execute(int layerNumber, int expectedCurrentLayerIndex, params int[] scrollingValues)
        {
            //Arrange
            var keyboardLayout = CreateLayers(layerNumber);

            var layoutTemplate = new List <KeyTemplate>();

            for (int i = 0; i < 1; i++)
            {
                layoutTemplate.Add(new KeyTemplate(i, i, 54, 81));
            }

            var mockLayoutService = new Mock <ILayoutService>();

            mockLayoutService.Setup(l => l.SupportsGeometry(null)).Returns(true);
            mockLayoutService.Setup(l => l.GetLayoutTemplate(null)).ReturnsAsync(layoutTemplate);
            var mockWindowService   = new Mock <IWindowService>();
            var mockSettingsService = new Mock <ISettingsService>();

            mockSettingsService.SetupProperty(s => s.EZLayout, keyboardLayout);

            //Act
            var displayLayoutViewModel = new DisplayLayoutViewModel(mockWindowService.Object, mockLayoutService.Object, mockSettingsService.Object);

            foreach (var scrollingValue in scrollingValues)
            {
                displayLayoutViewModel.ScrollLayerCommand.Execute(new MouseWheelEventArgs(Mouse.PrimaryDevice, 0, scrollingValue));
            }

            //Assert
            Assert.Equal(expectedCurrentLayerIndex, displayLayoutViewModel.CurrentLayerIndex);
        }
        public void NextLayerCommand_CanExecute(int layerNumber, bool expectedCanExecute)
        {
            //Arrange
            var keyboardLayout = CreateLayers(layerNumber);

            var layoutTemplate = new List <KeyTemplate>();

            for (int i = 0; i < 1; i++)
            {
                layoutTemplate.Add(new KeyTemplate(i, i, 54, 81));
            }

            var mockLayoutService = new Mock <ILayoutService>();

            mockLayoutService.Setup(l => l.GetLayoutTemplate()).ReturnsAsync(layoutTemplate);
            var mockWindowService   = new Mock <IWindowService>();
            var mockSettingsService = new Mock <ISettingsService>();

            mockSettingsService.SetupProperty(s => s.EZLayout, keyboardLayout);

            //Act
            var displayLayoutViewModel = new DisplayLayoutViewModel(mockWindowService.Object, mockLayoutService.Object, mockSettingsService.Object);

            //Assert
            Assert.Equal(expectedCanExecute, displayLayoutViewModel.NextLayerCommand.CanExecute(null));
        }
        public void NoLayoutAvailable()
        {
            // Arrange
            var mockLayoutService   = new Mock <ILayoutService>();
            var mockWindowService   = new Mock <IWindowService>();
            var mockSettingsService = new Mock <ISettingsService>();

            mockSettingsService.SetupProperty(s => s.EZLayout, CreateLayers(0));

            // Act
            var displayLayoutViewModel = new DisplayLayoutViewModel(mockWindowService.Object, mockLayoutService.Object, mockSettingsService.Object);

            // Assert
            Assert.True(displayLayoutViewModel.NoLayoutAvailable);
        }
        public void LostFocusCommand_Execute()
        {
            //Arrange
            var mockWindowService = new Mock <IWindowService>();

            mockWindowService.Setup(w => w.CloseWindow <DisplayLayoutWindow>()).Verifiable();
            var mockLayoutService   = new Mock <ILayoutService>();
            var mockSettingsService = new Mock <ISettingsService>();

            //Act
            var displayLayoutViewModel = new DisplayLayoutViewModel(mockWindowService.Object, mockLayoutService.Object, mockSettingsService.Object);

            displayLayoutViewModel.LostFocusCommand.Execute(null);

            //Assert
            mockWindowService.Verify(w => w.CloseWindow <DisplayLayoutWindow>(), Times.Once);
        }
        public void LoadCompleteLayout(int numberOfKey, int numberOfLayer, bool noLayoutAvailable)
        {
            //Arrange
            var layoutTemplate = new List <KeyTemplate>();
            var ezKeys         = new List <EZKey>();

            for (int i = 0; i < numberOfKey; i++)
            {
                layoutTemplate.Add(new KeyTemplate(i, i, 54, 81));
                ezKeys.Add(new EZKey());
            }

            var keyboardLayout = new EZLayout();

            for (int i = 0; i < numberOfLayer; i++)
            {
                keyboardLayout.EZLayers.Add(new EZLayer {
                    Index  = i,
                    EZKeys = new List <EZKey>(ezKeys)
                });
            }

            var mockWindowService = new Mock <IWindowService>();
            var mockLayoutService = new Mock <ILayoutService>();

            mockLayoutService.Setup(l => l.SupportsGeometry(null)).Returns(true);
            mockLayoutService.Setup(l => l.GetLayoutTemplate(null)).ReturnsAsync(layoutTemplate).Verifiable();
            var mockSettingsService = new Mock <ISettingsService>();

            mockSettingsService.SetupProperty(s => s.EZLayout, keyboardLayout);

            //Act
            var displayLayoutViewModel = new DisplayLayoutViewModel(mockWindowService.Object, mockLayoutService.Object, mockSettingsService.Object);

            //Assert
            Assert.Equal(noLayoutAvailable, displayLayoutViewModel.NoLayoutAvailable);
            mockLayoutService.Verify(l => l.GetLayoutTemplate(null), Times.AtMost(numberOfLayer));
            Assert.Equal(numberOfKey, displayLayoutViewModel.CurrentLayoutTemplate.Count);
        }
        public void DisplayLayoutViewModel_Constructor()
        {
            //Arrange
            var mockWindowService   = new Mock <IWindowService>();
            var mockLayoutService   = new Mock <ILayoutService>();
            var mockSettingsService = new Mock <ISettingsService>();

            mockSettingsService.SetupProperty(s => s.EZLayout, CreateLayers(1));

            //Act
            var displayLayoutViewModel = new DisplayLayoutViewModel(mockWindowService.Object, mockLayoutService.Object, mockSettingsService.Object);

            //Assert
            Assert.Equal("ErgoDox Layout", displayLayoutViewModel.WindowTitle);
            Assert.Equal("No layout available !", displayLayoutViewModel.NoLayoutWarningFirstLine);
            Assert.Equal("Please, go to the settings and update the layout.", displayLayoutViewModel.NoLayoutWarningSecondLine);
            Assert.Equal("Current layer :", displayLayoutViewModel.CurrentLayerNameTitle);
            Assert.Equal("", displayLayoutViewModel.CurrentLayerName);
            Assert.Equal("Scroll up/down or press 'Space' to display next layer", displayLayoutViewModel.ControlHintSpaceLabel);
            Assert.Equal("Press 'Escape' to hide window", displayLayoutViewModel.ControlHintEscapeLabel);
            Assert.Equal("_Pin window", displayLayoutViewModel.ToggleBtnPinWindowContent);
            Assert.Equal("Press 'P' to toggle", displayLayoutViewModel.ToggleBtnPinWindowTooltip);
        }
        public void DisplayLayoutViewModel_Constructor()
        {
            //Arrange
            var mockWindowService   = new Mock <IWindowService>();
            var mockLayoutService   = new Mock <ILayoutService>();
            var mockSettingsService = new Mock <ISettingsService>();

            mockSettingsService.SetupProperty(s => s.EZLayout, CreateLayers(1));
            mockLayoutService.Setup(l => l.SupportsGeometry(null)).Returns(true).Verifiable();

            //Act
            var displayLayoutViewModel = new DisplayLayoutViewModel(mockWindowService.Object, mockLayoutService.Object, mockSettingsService.Object);

            //Assert
            Assert.Equal("ErgoDox Layout", displayLayoutViewModel.WindowTitle);
            Assert.Null(displayLayoutViewModel.NoLayoutWarningFirstLine);
            Assert.Null(displayLayoutViewModel.NoLayoutWarningSecondLine);
            Assert.Equal("Current layer :", displayLayoutViewModel.CurrentLayerNameTitle);
            Assert.Equal("", displayLayoutViewModel.CurrentLayerName);
            Assert.Equal("Scroll up/down or press 'Space' to display next layer", displayLayoutViewModel.ControlHintSpaceLabel);
            Assert.Equal("Press 'Escape' to hide window", displayLayoutViewModel.ControlHintEscapeLabel);
            Assert.Equal("_Pin window", displayLayoutViewModel.ToggleBtnPinWindowContent);
            Assert.Equal("Press 'P' to toggle", displayLayoutViewModel.ToggleBtnPinWindowTooltip);
        }