/// <summary>
        /// Build IExecutionMain and start logic.
        /// </summary>
        public void Execute()
        {
            IWindowHandle windowHandle = new LastActiveWindowHandle();
            IScreen screen = new ActiveWindowDependendScreen(windowHandle);
            IMoveWindow moveWindow = new MoveActiveWindow(windowHandle);
            IChangeWindowPosition position = new ResizeActiveWindowTo1024X768OnTopLeftOfCurrentScreen(screen, moveWindow);
            IWindowTitle windowTitle = new ActiveWindowTitle(windowHandle);
            IPluginState pluginState = new ActiveWindowTitleNotStartMenuePluginState(windowTitle);
            IExecutionMain executionMain = new MoveActiveWindowPositionExecutionMain(position, pluginState);

            executionMain.Run();
        }
        public void Now_CallsMoveWindowWithScreenWorkingAreaXAndYWith1024AndHeight768(int workingX, int workingY)
        {
            using (ShimsContext.Create())
            {
                // Arrange
                var screen = Substitute.For<IScreen>();
                var moveWindow = Substitute.For<IMoveWindow>();

                var screenShim = new ShimScreen
                {
                    WorkingAreaGet = () => new Rectangle(workingX, workingY, 100, 100)
                };

                screen.Value.Returns(screenShim);

                var sut = new ResizeActiveWindowTo1024X768OnTopLeftOfCurrentScreen(screen, moveWindow);

                // Act
                sut.Now();

                // Assert
                moveWindow.Received(1).To(workingX, workingY, 1024, 768);
            }
        }