Esempio n. 1
0
        public void MovingCursorRelativeToEnd()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.MoveCursor(SeekOrigin.End, 1, out int delta).Should().BeFalse();
            buffer.CursorIndex.Should().Be(0);
            delta.Should().Be(0);

            buffer.MoveCursor(SeekOrigin.End, 0, out delta).Should().BeTrue();
            buffer.CursorIndex.Should().Be(4);
            delta.Should().Be(4);

            buffer.MoveCursor(SeekOrigin.End, -2, out delta).Should().BeTrue();
            buffer.CursorIndex.Should().Be(2);
            delta.Should().Be(-2);

            buffer.MoveCursor(SeekOrigin.End, 4, out delta).Should().BeFalse();
            buffer.CursorIndex.Should().Be(2);
            delta.Should().Be(0);

            buffer.MoveCursor(SeekOrigin.End, -10, out delta).Should().BeFalse();
            buffer.CursorIndex.Should().Be(2);
            delta.Should().Be(0);
        }
Esempio n. 2
0
        public void ReadingAtWithExplicitBuffer()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            var outBuffer = new char[4];

            buffer.ReadAt(0, outBuffer, 0, 2);
            outBuffer[0].Should().Be('a');
            outBuffer[1].Should().Be('b');

            buffer.ReadAt(2, outBuffer, 0, 2);
            outBuffer[0].Should().Be('c');
            outBuffer[1].Should().Be('d');

            outBuffer[0] = 'x';
            buffer.ReadAt(0, outBuffer, 1, 1);
            outBuffer[0].Should().Be('x');
            outBuffer[1].Should().Be('a');

            buffer.Invoking(b => b.ReadAt(0, null, 0, 2)).Should().Throw <ArgumentNullException>();
            buffer.Invoking(b => b.ReadAt(2, outBuffer, 0, 4)).Should().Throw <ArgumentException>();
            buffer.Invoking(b => b.ReadAt(2, outBuffer, 3, 2)).Should().Throw <ArgumentException>();
        }
Esempio n. 3
0
        public void ReplaceWithTooLongString()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.Invoking(b => b.Replace("xyzzy")).Should().Throw <ArgumentOutOfRangeException>();
        }
Esempio n. 4
0
        public void ReplaceWithNullString()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.Invoking(b => b.Replace(null)).Should().Throw <ArgumentNullException>();
        }
Esempio n. 5
0
        public void ReplaceEntireString()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.Replace("xyzw");
            buffer.Contents.Should().Be("xyzw");
        }
Esempio n. 6
0
        public void ReplaceWithEmptyString()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.Replace(string.Empty);
            buffer.Contents.Should().Be("abcd");
        }
Esempio n. 7
0
        public void ReplacingAtEnd()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");
            buffer.MoveCursor(SeekOrigin.End, 0);

            buffer.Invoking(b => b.Replace('x')).Should().Throw <Exception>();
        }
Esempio n. 8
0
        public void ReplaceOneChar()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");
            buffer.MoveCursor(SeekOrigin.Current, 1).Should().BeTrue();
            buffer.Replace('x');
            buffer.Contents.Should().Be("axcd");
        }
Esempio n. 9
0
        public void RemovePastEnd()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.Remove(5).Should().BeFalse();
            buffer.Contents.Should().Be("abcd");
        }
Esempio n. 10
0
        public void MovingCursorBogusly()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.Invoking(b => b.MoveCursor((SeekOrigin)0x10, 1))
            .Should().Throw <ArgumentOutOfRangeException>();
        }
Esempio n. 11
0
        public void ReplacePartOfString()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.MoveCursor(SeekOrigin.Begin, 1);
            buffer.Replace("xy");
            buffer.Contents.Should().Be("axyd");
        }
Esempio n. 12
0
        public void EmptyBuffer()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Contents.Should().BeEmpty();
            buffer.CursorIndex.Should().Be(0);
            buffer.Length.Should().Be(0);
            buffer.CursorIsAtEnd.Should().BeTrue();
            buffer.ToString().Should().BeEmpty();
        }
Esempio n. 13
0
        public void MovingCursorBogusly()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            Action movement = () => buffer.MoveCursor((SeekOrigin)0x10, 1);

            movement.ShouldThrow <ArgumentOutOfRangeException>();
        }
Esempio n. 14
0
        public void ReplaceWithNullString()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            Action replacement = () => buffer.Replace(null);

            replacement.ShouldThrow <ArgumentNullException>();
        }
Esempio n. 15
0
        public void RemovingAtEnd()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");
            buffer.MoveCursor(SeekOrigin.End, 0);

            buffer.Remove().Should().BeFalse();
            buffer.Contents.Should().Be("abcd");
        }
Esempio n. 16
0
        public void RemoveCharBeforeStart()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.RemoveCharBeforeCursor().Should().BeFalse();

            buffer.Contents.Should().Be("abcd");
        }
Esempio n. 17
0
        public void ReplaceWithTooLongString()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            Action replacement = () => buffer.Replace("xyzzy");

            replacement.ShouldThrow <ArgumentOutOfRangeException>();
        }
Esempio n. 18
0
        public void ReplacingAtEnd()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");
            buffer.MoveCursor(SeekOrigin.End, 0);

            Action replacementAction = () => buffer.Replace('x');

            replacementAction.ShouldThrow <Exception>();
        }
Esempio n. 19
0
        public void ReadingAt()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.ReadAt(0, 2).Should().ContainInOrder('a', 'b');
            buffer.ReadAt(2, 2).Should().ContainInOrder('c', 'd');

            ((Action)(() => buffer.ReadAt(2, 4))).ShouldThrow <ArgumentException>();
            ((Action)(() => buffer.ReadAt(3, 2))).ShouldThrow <ArgumentException>();
        }
Esempio n. 20
0
        public void ReadingAt()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.ReadAt(0, 2).Should().Equal('a', 'b');
            buffer.ReadAt(2, 2).Should().Equal('c', 'd');

            buffer.Invoking(b => b.ReadAt(2, 4)).Should().Throw <ArgumentException>();
            buffer.Invoking(b => b.ReadAt(3, 2)).Should().Throw <ArgumentException>();
        }
Esempio n. 21
0
        public void RemoveCharBeforeInMiddle()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.MoveCursor(SeekOrigin.End, -1);
            buffer.RemoveCharBeforeCursor().Should().BeTrue();

            buffer.Contents.Should().Be("abd");
            buffer.Length.Should().Be(3);
            buffer.CursorIndex.Should().Be(2);
        }
Esempio n. 22
0
        public void Reading()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.Read(0).Should().BeEmpty();
            buffer.Read(1).Should().ContainInOrder('a');
            buffer.Read(2).Should().ContainInOrder('a', 'b');
            buffer.Read(3).Should().ContainInOrder('a', 'b', 'c');
            buffer.Read(4).Should().ContainInOrder('a', 'b', 'c', 'd');
            ((Action)(() => buffer.Read(5))).ShouldThrow <ArgumentException>();
        }
Esempio n. 23
0
        public void InsertStringAtEnd()
        {
            const string s      = "xyzzy";
            var          buffer = new ConsoleInputBuffer();

            buffer.Insert(s);

            buffer.Contents.Should().Be(s);
            buffer.CursorIndex.Should().Be(0);
            buffer.Length.Should().Be(s.Length);
            buffer.CursorIsAtEnd.Should().BeFalse();
            buffer.ToString().Should().Be(s);
        }
Esempio n. 24
0
        public void InsertCharAtEnd()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert('x');

            buffer.Contents.Should().Be("x");
            buffer.CursorIndex.Should().Be(0);
            buffer.Length.Should().Be(1);
            buffer.CursorIsAtEnd.Should().BeFalse();
            buffer.ToString().Should().Be("x");
            buffer[0].Should().Be('x');
        }
Esempio n. 25
0
        public void Reading()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");

            buffer.Read(0).Should().BeEmpty();
            buffer.Read(1).Should().Equal('a');
            buffer.Read(2).Should().Equal('a', 'b');
            buffer.Read(3).Should().Equal('a', 'b', 'c');
            buffer.Read(4).Should().Equal('a', 'b', 'c', 'd');
            buffer.Invoking(b => b.Read(5)).Should().Throw <ArgumentException>();
        }
Esempio n. 26
0
        static void Main(string[] args)
        {
            using (ConsoleInputBuffer ib = JConsole.GetInputBuffer())
            {
                while (true)
                {
                    ConsoleInputEventInfo[] events = ib.ReadEvents(10);
                    Console.WriteLine("{0} events", events.Length);
                    foreach (ConsoleInputEventInfo ev in events)
                    {
                        Console.WriteLine("Event type = {0}", ev.EventType);
                        switch (ev.EventType)
                        {
                        case ConsoleInputEventType.KeyEvent:
                            Console.WriteLine("Key {0}", ev.KeyEvent.KeyDown ? "down" : "up");
                            Console.WriteLine("Scan code = {0}", ev.KeyEvent.VirtualScanCode);
                            Console.WriteLine("Virtual key code = {0}", ev.KeyEvent.VirtualKeyCode);
                            Console.WriteLine("Control key state = {0}", ev.KeyEvent.ControlKeyState);
                            Console.WriteLine("Ascii char = {0}", ev.KeyEvent.AsciiChar);
                            break;

                        case ConsoleInputEventType.MouseEvent:
                            if ((ev.MouseEvent.EventFlags & (ConsoleMouseEventType)0xfffff) == 0)
                            {
                                Console.Write("Mouse button,");
                            }
                            if ((ev.MouseEvent.EventFlags & ConsoleMouseEventType.DoubleClick) != 0)
                            {
                                Console.Write("Double click,");
                            }
                            if ((ev.MouseEvent.EventFlags & ConsoleMouseEventType.MouseWheeled) != 0)
                            {
                                Console.Write("Mouse wheeled,");
                            }
                            if ((ev.MouseEvent.EventFlags & ConsoleMouseEventType.MouseMoved) != 0)
                            {
                                Console.Write("Mouse moved,");
                            }
                            if ((ev.MouseEvent.EventFlags & ConsoleMouseEventType.MouseHWheeled) != 0)
                            {
                                Console.Write("Mouse hWheeled,");
                            }
                            Console.WriteLine("Button state = {0}", ev.MouseEvent.ButtonState);
                            break;
                        }
                    }
                }
            }
        }
Esempio n. 27
0
        private ConsoleLineInput CreateInput(IConsoleOutput consoleOutput = null, ConsoleCompletionHandler completionHandler = null)
        {
            consoleOutput = consoleOutput ?? Substitute.For <IConsoleOutput>();
            var buffer  = new ConsoleInputBuffer();
            var history = new ConsoleHistory();
            var input   = new ConsoleLineInput(consoleOutput, buffer, history, completionHandler);

            input.ConsoleOutput.Should().BeSameAs(consoleOutput);
            input.Buffer.Should().BeSameAs(buffer);
            input.History.Should().BeSameAs(history);
            input.CompletionHandler.Should().BeSameAs(completionHandler);
            input.InsertMode.Should().BeTrue();

            return(input);
        }
Esempio n. 28
0
        public void RemoveMultipleChars()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");
            buffer.MoveCursor(SeekOrigin.Begin, 1);

            buffer.Remove(2).Should().BeTrue();

            buffer.Contents.Should().Be("ad");
            buffer.CursorIndex.Should().Be(1);
            buffer.Length.Should().Be(2);
            buffer.CursorIsAtEnd.Should().BeFalse();
            buffer.ToString().Should().Be("ad");
        }
Esempio n. 29
0
        public void RemoveLastChar()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");
            buffer.MoveCursor(SeekOrigin.Begin, 3);

            buffer.Remove().Should().BeTrue();

            buffer.Contents.Should().Be("abc");
            buffer.CursorIndex.Should().Be(3);
            buffer.Length.Should().Be(3);
            buffer.CursorIsAtEnd.Should().BeTrue();
            buffer.ToString().Should().Be("abc");
        }
Esempio n. 30
0
        public void InsertStringInMiddle()
        {
            var buffer = new ConsoleInputBuffer();

            buffer.Insert("abcd");
            buffer.MoveCursor(SeekOrigin.Begin, 2);

            buffer.Insert("xyz");

            buffer.Contents.Should().Be("abxyzcd");
            buffer.CursorIndex.Should().Be(2);
            buffer.Length.Should().Be(7);
            buffer.CursorIsAtEnd.Should().BeFalse();
            buffer.ToString().Should().Be("abxyzcd");
        }