Example #1
0
        public void KeyEvents_NotFocused_Nothing()
        {
            ConControls.Controls.ConsoleControl?focused = null;
            using var stubbedWindow = new StubbedWindow
                  {
                      FocusedControlGet = () => focused,
                      FocusedControlSetConsoleControl = c => focused = c
                  };
            var stubbedController = new StubbedConsoleTextController
            {
                BufferLineCountGet = () => 20,
                MaxLineLengthGet   = () => 20,
                WidthGet           = () => 20,
                EndCaretGet        = () => (0, 20).Pt(),
                GetLineLengthInt32 = l => 20
            };

            using var sut = new StubbedTextControl(stubbedWindow, stubbedController)
                  {
                      Area   = (5, 5, 10, 10).Rect(),
                      Parent = stubbedWindow,
                      Caret  = (10, 10).Pt()
                  };
            sut.Focused.Should().BeFalse();
            var e = new KeyEventArgs(new ConsoleKeyEventArgs(new KEY_EVENT_RECORD
            {
                KeyDown        = 1,
                VirtualKeyCode = VirtualKey.Up
            }));

            stubbedWindow.KeyEventEvent(stubbedWindow, e);
            sut.Caret.Should().Be((10, 10).Pt());
            sut.Scroll.Should().Be(Point.Empty);
            e.Handled.Should().BeFalse();
        }
Example #2
0
        public void OnKeyEvent_Disabled_Notthing()
        {
            ConControls.Controls.ConsoleControl?focused = null;
            using var stubbedWindow = new StubbedWindow
                  {
                      FocusedControlGet = () => focused,
                      FocusedControlSetConsoleControl = c => focused = c
                  };
            using var sut = new ConControls.Controls.Button(stubbedWindow)
                  {
                      Size    = (10, 3).Sz(),
                      Parent  = stubbedWindow,
                      Enabled = false
                  };
            focused = sut;
            sut.Focused.Should().BeTrue();
            bool clicked = false;

            sut.Click += (sender, ea) => clicked = true;
            var e = new KeyEventArgs(new ConsoleKeyEventArgs(new KEY_EVENT_RECORD
            {
                KeyDown        = 1,
                ControlKeys    = ControlKeyStates.NUMLOCK_ON,
                VirtualKeyCode = VirtualKey.Return
            }));

            stubbedWindow.KeyEventEvent(stubbedWindow, e);
            clicked.Should().BeFalse();
            e.Handled.Should().BeFalse();
        }
Example #3
0
        public void OnWindowKeyEvent_VisibleEnabledFocused_OnKeyEventCalledThreadSafe()
        {
            var stubbedWindow = new StubbedWindow();
            var sut           = new StubbedConsoleControl(stubbedWindow)
            {
                Parent = stubbedWindow, Focusable = true, Focused = true
            };

            stubbedWindow.KeyEventEvent(stubbedWindow, new KeyEventArgs(new ConsoleKeyEventArgs(default)));
Example #4
0
        public void KeyEvents_Next_MovedPageDownAndScrolled()
        {
            StubbedTextControl?focused = null;

            using var stubbedWindow = new StubbedWindow
                  {
                      FocusedControlGet = () => focused
                  };
            var stubbedController = new StubbedConsoleTextController
            {
                BufferLineCountGet          = () => 20,
                MaxLineLengthGet            = () => 20,
                WidthGet                    = () => 20,
                EndCaretGet                 = () => (0, 20).Pt(),
                GetLineLengthInt32          = l => 20,
                MoveCaretPageDownPointInt32 = (p, l) =>
                {
                    l.Should().Be(10);
                    p.Should().Be((10, 10).Pt());
                    return((13, 14).Pt());
                }
            };

            using var sut = new StubbedTextControl(stubbedWindow, stubbedController)
                  {
                      Area   = (5, 5, 10, 10).Rect(),
                      Parent = stubbedWindow,
                      Caret  = (10, 10).Pt()
                  };
            focused = sut;
            sut.Focused.Should().BeTrue();
            var e = new KeyEventArgs(new ConsoleKeyEventArgs(new KEY_EVENT_RECORD
            {
                KeyDown        = 1,
                VirtualKeyCode = VirtualKey.Next
            }));

            stubbedWindow.KeyEventEvent(stubbedWindow, e);
            sut.Caret.Should().Be((13, 14).Pt());
            sut.Scroll.Should().Be((4, 5).Pt());
            e.Handled.Should().BeTrue();
        }
    }
}
Example #5
0
        public void KeyEvents_RightCtrlEnd_MovedToEndAndScrolled()
        {
            StubbedTextControl?focused = null;

            using var stubbedWindow = new StubbedWindow
                  {
                      FocusedControlGet = () => focused
                  };
            var stubbedController = new StubbedConsoleTextController
            {
                BufferLineCountGet = () => 20,
                MaxLineLengthGet   = () => 20,
                WidthGet           = () => 20,
                EndCaretGet        = () => (0, 20).Pt(),
                GetLineLengthInt32 = l => 20,
                MoveCaretEndPoint  = p =>
                {
                    p.Should().Be((10, 10).Pt());
                    return((13, 14).Pt());
                }
            };

            using var sut = new StubbedTextControl(stubbedWindow, stubbedController)
                  {
                      Area   = (5, 5, 10, 10).Rect(),
                      Parent = stubbedWindow,
                      Caret  = (10, 10).Pt()
                  };
            focused = sut;
            sut.Focused.Should().BeTrue();
            var e = new KeyEventArgs(new ConsoleKeyEventArgs(new KEY_EVENT_RECORD
            {
                KeyDown        = 1,
                VirtualKeyCode = VirtualKey.End,
                ControlKeys    = ControlKeyStates.RIGHT_CTRL_PRESSED
            }));

            stubbedWindow.KeyEventEvent(stubbedWindow, e);
            sut.Caret.Should().Be((13, 14).Pt());
            sut.Scroll.Should().Be((4, 5).Pt());
            e.Handled.Should().BeTrue();
        }
Example #6
0
        public void KeyEvents_EventArgsNull_ArgumentNullException()
        {
            using var stubbedWindow = new StubbedWindow();
            var stubbedController = new StubbedConsoleTextController
            {
                BufferLineCountGet = () => 20,
                MaxLineLengthGet   = () => 20,
                WidthGet           = () => 20,
                EndCaretGet        = () => (0, 20).Pt(),
                GetLineLengthInt32 = l => 20
            };

            using var sut = new ConControls.Controls.TextBlock(stubbedWindow, stubbedController)
                  {
                      Area    = (5, 5, 10, 10).Rect(),
                      Parent  = stubbedWindow,
                      Caret   = (10, 10).Pt(),
                      Focused = true
                  };

            sut.Invoking(s => stubbedWindow.KeyEventEvent(stubbedWindow, null !)).Should().Throw <ArgumentNullException>();
        }