public void TestNext() { var dosKey = new Doskey(10); dosKey.Record("in1"); dosKey.Record("in2"); dosKey.Record("in3"); var record1 = dosKey.TryGetPrev(); var record2 = dosKey.TryGetPrev(); var record3 = dosKey.TryGetPrev(); var record4 = dosKey.TryGetPrev(); var record5 = dosKey.TryGetNext(); var record6 = dosKey.TryGetNext(); var record7 = dosKey.TryGetNext(); var record8 = dosKey.TryGetNext(); Assert.AreEqual("in3", record1); Assert.AreEqual("in2", record2); Assert.AreEqual("in1", record3); Assert.AreEqual(null, record4); Assert.AreEqual("in2", record5); Assert.AreEqual("in3", record6); Assert.AreEqual(null, record7); Assert.AreEqual(null, record8); }
private string[] _HandlerInput(Stack <char> chars) { var keyInfo = System.Console.ReadKey(true); // Ignore if Alt or Ctrl is pressed. if ((keyInfo.Modifiers & ConsoleModifiers.Alt) == ConsoleModifiers.Alt) { return(null); } if ((keyInfo.Modifiers & ConsoleModifiers.Control) == ConsoleModifiers.Control) { return(null); } // Ignore if KeyChar value is \u0000. // Ignore tab key. if (keyInfo.Key == ConsoleKey.DownArrow) { var message = _Doskey.TryGetNext(); if (message != null) { _ResetLine(chars, message); } } if (keyInfo.Key == ConsoleKey.UpArrow) { var message = _Doskey.TryGetPrev(); if (message != null) { _ResetLine(chars, message); } } if (keyInfo.KeyChar == '\u0000') { return(null); } if (keyInfo.Key == ConsoleKey.Tab) { return(null); } if (keyInfo.Key == ConsoleKey.Escape) { return(null); } if (keyInfo.Key == ConsoleKey.Backspace) { if (chars.Count() > 0) { chars.Pop(); _Viewer.Write("\b \b"); } } else if (keyInfo.Key == ConsoleKey.Enter) { var commands = new string(chars.Reverse().ToArray()); commands = commands.Trim(); if (commands.Length > 0) { chars.Clear(); _Viewer.Write("\n"); _Doskey.Record(commands); return(commands.Split( new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)); } return(null); } else { chars.Push(keyInfo.KeyChar); _Viewer.Write(keyInfo.KeyChar.ToString()); } return(null); }
public void TestPrevLimit() { var dosKey = new Doskey(2); dosKey.Record("in1"); dosKey.Record("in2"); dosKey.Record("in3"); var record1 = dosKey.TryGetPrev(); var record2 = dosKey.TryGetPrev(); var record3 = dosKey.TryGetPrev(); var record4 = dosKey.TryGetPrev(); Assert.AreEqual("in3", record1); Assert.AreEqual("in2", record2); Assert.AreEqual(null, record3); Assert.AreEqual(null, record4); }