コード例 #1
0
        public void UpShowsPreviousInHistory_CantGoPastFirst()
        {
            var view     = new DummyTerminalView(s => new SizeD(s.Length, 1));
            var terminal = new TerminalController(view, new SizeD(1, 1), int.MaxValue, m_promptSpan, m_promptWrapSpan, m_promptOutputSpan, m_promptOutputWrapSpan);

            terminal.LineEntered += (s, lea) => terminal.WriteOutput("out: " + lea.Line);
            terminal.CharsPerLine = m_prompt.Length + 5;

            "aa\r".ForEach(c => terminal.CharTyped(c));
            "bb\r".ForEach(c => terminal.CharTyped(c));
            "cc\r".ForEach(c => terminal.CharTyped(c));
            "dd".ForEach(c => terminal.CharTyped(c));  //current line

            terminal.ControlKeyPressed(TerminalKey.Up, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Up, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Up, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Up, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Up, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Up, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Up, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Up, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Up, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Up, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Up, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Up, TerminalKeyModifiers.None);

            DrawingInfo info = terminal.GetCurrentPageDrawingInfo(50);

            var lines = CoreTestHelpers.GetLinesAsText(info);

            Assert.AreEqual(m_prompt + "aa", lines[lines.Count - 1], "Last line should now show first command");
        }
コード例 #2
0
        public void RightThroughWrap()
        {
            var view     = new DummyTerminalView(s => new SizeD(s.Length, 1));
            var terminal = new TerminalController(view, new SizeD(1, 1), int.MaxValue, m_promptSpan, m_promptWrapSpan, m_promptOutputSpan, m_promptOutputWrapSpan);

            terminal.LineEntered += (s, lea) => terminal.WriteOutput("out: " + lea.Line);
            terminal.CharsPerLine = m_prompt.Length + 5;

            "abcdefghijk".ForEach(c => terminal.CharTyped(c));
            terminal.ControlKeyPressed(TerminalKey.Left, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Left, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Left, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Left, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Left, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Left, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Left, TerminalKeyModifiers.None);

            terminal.ControlKeyPressed(TerminalKey.Right, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Right, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Right, TerminalKeyModifiers.None);

            DrawingInfo info = terminal.GetCurrentPageDrawingInfo(50);

            var lines = CoreTestHelpers.GetLinesAsText(info, true);

            Assert.AreEqual(3, lines.Count, "Incorrect number of lines");
            Assert.AreEqual(m_prompt + "abcde", lines[0], "Incorrect input line 0");
            Assert.AreEqual(m_promptWrap + "fg|hi", lines[1], "Incorrect input line 1");
            Assert.AreEqual(m_promptWrap + "jk", lines[2], "Incorrect input line 2");
        }
コード例 #3
0
        protected override void OnKeyPress(KeyPressEventArgs e)
        {
            base.OnKeyPress(e);

            m_terminal.CharTyped(e.KeyChar);
            Invalidate(true);
        }
コード例 #4
0
        public void EscClearsCurrentLine()
        {
            var view     = new DummyTerminalView(s => new SizeD(s.Length, 1));
            var terminal = new TerminalController(view, new SizeD(1, 1), int.MaxValue, m_promptSpan, m_promptWrapSpan, m_promptOutputSpan, m_promptOutputWrapSpan);

            terminal.CharsPerLine = m_prompt.Length + 5;

            "abcdefghlakdgj;lkdjglkjd;lgkj;dslkjg;lds".ForEach(c => terminal.CharTyped(c));
            terminal.CharTyped('\x1B');

            DrawingInfo info  = terminal.GetCurrentPageDrawingInfo(4);
            var         lines = CoreTestHelpers.GetLinesAsText(info);

            Assert.AreEqual(1, lines.Count, "Incorrect number of lines");
            Assert.AreEqual(m_prompt, lines[0], "Incorrect input line 0");
        }
コード例 #5
0
        public void InputAndOutputWrapping()
        {
            var view     = new DummyTerminalView(s => new SizeD(s.Length, 1));
            var terminal = new TerminalController(view, new SizeD(1, 1), int.MaxValue, m_promptSpan, m_promptWrapSpan, m_promptOutputSpan, m_promptOutputWrapSpan);

            terminal.LineEntered += (s, lea) => terminal.WriteOutput("out: " + lea.Line);
            terminal.CharsPerLine = m_prompt.Length + 5;

            "abcdefghijk\r".ForEach(c => terminal.CharTyped(c));

            DrawingInfo info = terminal.GetCurrentPageDrawingInfo(50);

            var lines = CoreTestHelpers.GetLinesAsText(info);

            Assert.AreEqual(7, lines.Count, "Incorrect number of lines");
            Assert.AreEqual(m_prompt + "abcde", lines[0], "Incorrect input line 0");
            Assert.AreEqual(m_promptWrap + "fghi", lines[1], "Incorrect input line 1");
            Assert.AreEqual(m_promptWrap + "jk", lines[2], "Incorrect input line 2");

            Assert.AreEqual(m_promptOutput + "out: ab", lines[3], "Incorrect output line 3");
            Assert.AreEqual(m_promptOutputWrap + "cdefgh", lines[4], "Incorrect output line 4");
            Assert.AreEqual(m_promptOutputWrap + "ijk", lines[5], "Incorrect output line 5");

            Assert.AreEqual(m_prompt, lines[6], "Incorrect input line 6");
        }
コード例 #6
0
        public void Backspace()
        {
            var view     = new DummyTerminalView(s => new SizeD(s.Length, 1));
            var terminal = new TerminalController(view, new SizeD(1, 1), int.MaxValue, m_promptSpan, m_promptWrapSpan, m_promptOutputSpan, m_promptOutputWrapSpan);

            terminal.LineEntered += (s, lea) => terminal.WriteOutput("out: " + lea.Line);
            terminal.CharsPerLine = m_prompt.Length + 5;

            "abcd".ForEach(c => terminal.CharTyped(c));
            terminal.CharTyped('\b');
            terminal.CharTyped('\b');

            DrawingInfo info = terminal.GetCurrentPageDrawingInfo(50);

            var lines = CoreTestHelpers.GetLinesAsText(info);

            Assert.AreEqual(m_prompt + "ab", lines[lines.Count - 1], "Backspace should have deleted the text");
        }
コード例 #7
0
        public void WriteOutput()
        {
            var view     = new DummyTerminalView(s => new SizeD(s.Length, 1));
            var terminal = new TerminalController(view, new SizeD(1, 1), int.MaxValue, m_promptSpan, m_promptWrapSpan, m_promptOutputSpan, m_promptOutputWrapSpan);

            terminal.CharsPerLine = 10;

            "ab\r".ForEach(c => terminal.CharTyped(c));
            terminal.WriteOutput("123");
            "cd".ForEach(c => terminal.CharTyped(c));

            DrawingInfo info = terminal.GetCurrentPageDrawingInfo(5);

            var lines = CoreTestHelpers.GetLinesAsText(info);

            Assert.AreEqual(3, lines.Count, "Incorrect number of lines");
            Assert.AreEqual(m_prompt + "ab", lines[0]);
            Assert.AreEqual(m_promptOutput + "123", lines[1]);
            Assert.AreEqual(m_prompt + "cd", lines[2]);
        }
コード例 #8
0
        protected override void OnTextInput(TextCompositionEventArgs e)
        {
            base.OnTextInput(e);

            if (!string.IsNullOrEmpty(e.Text))
            {
                m_terminal.CharTyped(e.Text[0]);
            }

            m_terminalCanvas.InvalidateVisual();
        }
コード例 #9
0
        public void Insert()
        {
            var view     = new DummyTerminalView(s => new SizeD(s.Length, 1));
            var terminal = new TerminalController(view, new SizeD(1, 1), int.MaxValue, m_promptSpan, m_promptWrapSpan, m_promptOutputSpan, m_promptOutputWrapSpan);

            terminal.LineEntered += (s, lea) => terminal.WriteOutput("out: " + lea.Line);
            terminal.CharsPerLine = m_prompt.Length + 5;

            "abcde".ForEach(c => terminal.CharTyped(c));
            terminal.ControlKeyPressed(TerminalKey.Left, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Left, TerminalKeyModifiers.None);
            terminal.CharTyped('1');
            terminal.CharTyped('2');

            DrawingInfo info = terminal.GetCurrentPageDrawingInfo(50);

            var lines = CoreTestHelpers.GetLinesAsText(info);

            Assert.AreEqual(2, lines.Count, "Incorrect number of lines");
            Assert.AreEqual(m_prompt + "abc12", lines[0], "Line 0 invalid");
            Assert.AreEqual(m_promptWrap + "de", lines[1], "Line 1 invalid");
        }
コード例 #10
0
        public void Left()
        {
            var view     = new DummyTerminalView(s => new SizeD(s.Length, 1));
            var terminal = new TerminalController(view, new SizeD(1, 1), int.MaxValue, m_promptSpan, m_promptWrapSpan, m_promptOutputSpan, m_promptOutputWrapSpan);

            terminal.LineEntered += (s, lea) => terminal.WriteOutput("out: " + lea.Line);
            terminal.CharsPerLine = m_prompt.Length + 5;

            "abcd".ForEach(c => terminal.CharTyped(c));
            terminal.ControlKeyPressed(TerminalKey.Left, TerminalKeyModifiers.None);
            terminal.ControlKeyPressed(TerminalKey.Left, TerminalKeyModifiers.None);

            DrawingInfo info = terminal.GetCurrentPageDrawingInfo(50);

            var lines = CoreTestHelpers.GetLinesAsText(info, true);

            Assert.AreEqual(m_prompt + "ab|cd", lines[lines.Count - 1], "Left navigation failed");
        }
コード例 #11
0
        public void InputWrapping()
        {
            var view     = new DummyTerminalView(s => new SizeD(s.Length, 1));
            var terminal = new TerminalController(view, new SizeD(1, 1), int.MaxValue, m_promptSpan, m_promptWrapSpan, m_promptOutputSpan, m_promptOutputWrapSpan);

            terminal.CharsPerLine = m_prompt.Length + 5;

            "abcdefghijk".ForEach(c => terminal.CharTyped(c));

            DrawingInfo info = terminal.GetCurrentPageDrawingInfo(5);

            var lines = CoreTestHelpers.GetLinesAsText(info);

            Assert.AreEqual(3, lines.Count, "Incorrect number of lines");
            Assert.AreEqual(m_prompt + "abcde", lines[0], "Incorrect input line");
            Assert.AreEqual(m_promptWrap + "fghi", lines[1], "Incorrect input line");
            Assert.AreEqual(m_promptWrap + "jk", lines[2], "Incorrect input line");
        }
コード例 #12
0
        public void AfterReturnTypeOutputAndNextInputLineShow()
        {
            var view     = new DummyTerminalView(s => new SizeD(s.Length, 1));
            var terminal = new TerminalController(view, new SizeD(1, 1), int.MaxValue, m_promptSpan, m_promptWrapSpan, m_promptOutputSpan, m_promptOutputWrapSpan);

            terminal.LineEntered += (s, lea) => terminal.WriteOutput("out: " + lea.Line);
            terminal.CharsPerLine = 10;

            "ab\r".ForEach(c => terminal.CharTyped(c));

            DrawingInfo info = terminal.GetCurrentPageDrawingInfo(5);

            var lines = CoreTestHelpers.GetLinesAsText(info);

            Assert.AreEqual(3, lines.Count, "Incorrect number of lines");
            Assert.AreEqual(m_prompt + "ab", lines[0], "Incorrect input line");
            Assert.AreEqual(m_promptOutput + "out: ab", lines[1], "Incorrect outline");
            Assert.AreEqual(m_prompt, lines[2], "Incorrect next input line");
        }