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" ); }
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"); }
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"); }
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"); }
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"); }
public void SingleLine() { 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".ForEach(c => terminal.CharTyped(c)); DrawingInfo info = terminal.GetCurrentPageDrawingInfo(5); var lines = CoreTestHelpers.GetLinesAsText(info); Assert.AreEqual(1, lines.Count, "Incorrect number of lines"); Assert.AreEqual(m_prompt + "ab", lines[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" ); }
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" ); }
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"); }
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"); }
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"); }
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" ); }
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"); }
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 ] ); }
public void Delete() { 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; "abcdefg".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.Delete, TerminalKeyModifiers.None ); terminal.ControlKeyPressed( TerminalKey.Delete, TerminalKeyModifiers.None ); DrawingInfo info = terminal.GetCurrentPageDrawingInfo( 50 ); var lines = CoreTestHelpers.GetLinesAsText( info ); Assert.AreEqual( 1, lines.Count, "Incorrect number of lines" ); Assert.AreEqual( m_prompt + "abcdg", lines[ 0 ], "Line 0 invalid" ); }
public void Delete() { 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; "abcdefg".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.Delete, TerminalKeyModifiers.None); terminal.ControlKeyPressed(TerminalKey.Delete, TerminalKeyModifiers.None); DrawingInfo info = terminal.GetCurrentPageDrawingInfo(50); var lines = CoreTestHelpers.GetLinesAsText(info); Assert.AreEqual(1, lines.Count, "Incorrect number of lines"); Assert.AreEqual(m_prompt + "abcdg", lines[0], "Line 0 invalid"); }
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" ); }
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" ); }