public static void RunMenu(IList <Pair <string, Action> > menu) { for (;;) { Console.WriteLine(); Console.WriteLine("What do you want to do? (Esc to quit)"); for (int i = 0; i < menu.Count; i++) { Console.WriteLine(ParseHelpers.HexDigitChar(i + 1) + ". " + menu[i].Key); } ConsoleKeyInfo k; Console.WriteLine((k = Console.ReadKey(true)).KeyChar); if (k.Key == ConsoleKey.Escape || k.Key == ConsoleKey.Enter) { break; } else { int i = ParseHelpers.HexDigitValue(k.KeyChar); if (i > 0 && i <= menu.Count) { menu[i - 1].Value(); } } } }
public static int RunMenu(IList <Pair <string, Func <int> > > menu, IEnumerator <char> input = null) { var reader = input ?? ConsoleChars(); int errorCount = 0; for (;;) { Console.WriteLine(); Console.WriteLine("What do you want to do? (Esc to quit)"); for (int i = 0; i < menu.Count; i++) { Console.WriteLine(PrintHelpers.HexDigitChar(i + 1) + ". " + menu[i].Key); } Console.WriteLine("Space. Run all tests"); if (!reader.MoveNext()) { break; } char c = reader.Current; if (c == ' ') { errorCount = 0; for (int i = 0; i < menu.Count; i++) { Console.WriteLine(); ConsoleMessageSink.WriteColoredMessage(ConsoleColor.White, i + 1, menu[i].Key); errorCount += menu[i].Value(); } if (errorCount == 0) { ConsoleMessageSink.WriteColoredMessage(ConsoleColor.White, null, "All test(s) passed (except known failures, if any)."); } else { ConsoleMessageSink.WriteColoredMessage(ConsoleColor.Red, null, "{0} test(s) unexpectedly failed in total.".Localized(errorCount)); } } else { int i = ParseHelpers.HexDigitValue(c); if (i > 0 && i <= menu.Count) { errorCount += menu[i - 1].Value(); } } } return(errorCount); }
public static int RunMenu(List <Pair <string, Func <int> > > menu) { int errorCount = 0; while (true) { Console.WriteLine(); Console.WriteLine("What do you want to do? (Esc to quit)"); for (int i = 0; i < menu.Count; i++) { Console.WriteLine(PrintHelpers.HexDigitChar(i + 1) + ". " + menu[i].Key); } Console.WriteLine("Space. Run all tests"); char c = default(char); for (ConsoleKeyInfo k; (k = Console.ReadKey(true)).Key != ConsoleKey.Enter;) { if (k.Key == ConsoleKey.Escape) { return(errorCount); } else { c = k.KeyChar; break; } } if (c == ' ') { errorCount += RunAllTests(menu); } else { int i = ParseHelpers.HexDigitValue(c); if (i > 0 && i <= menu.Count) { errorCount += menu[i - 1].Value(); } } } }
public static int RunMenu(IList <Pair <string, Func <int> > > menu, IEnumerable <char> input) { var reader = (input ?? ConsoleChars()).GetEnumerator(); int errorCount = 0; for (;;) { Console.WriteLine(); Console.WriteLine("What do you want to do? (Esc to quit)"); for (int i = 0; i < menu.Count; i++) { Console.WriteLine(PrintHelpers.HexDigitChar(i + 1) + ". " + menu[i].Key); } Console.WriteLine("Space. Run all tests"); if (!reader.MoveNext()) { break; } char c = reader.Current; if (c == ' ') { for (int i = 0; i < menu.Count; i++) { Console.WriteLine(); ConsoleMessageSink.WriteColoredMessage(ConsoleColor.White, i + 1, menu[i].Key); errorCount += menu[i].Value(); } } else { int i = ParseHelpers.HexDigitValue(c); if (i > 0 && i <= menu.Count) { errorCount += menu[i - 1].Value(); } } } return(errorCount); }
public static void RunMenu(IList <Pair <string, Action> > menu, IEnumerator <char> input = null) { var reader = input ?? ConsoleChars(); for (;;) { Console.WriteLine(); Console.WriteLine("What do you want to run? (Esc to quit)"); for (int i = 0; i < menu.Count; i++) { Console.WriteLine(PrintHelpers.HexDigitChar(i + 1) + ". " + menu[i].Key); } Console.WriteLine("Space. Run all"); if (!reader.MoveNext()) { break; } char c = reader.Current; if (c == ' ') { for (int i = 0; i < menu.Count; i++) { RunOne(menu, i); } } else { int i = ParseHelpers.HexDigitValue(c); if (i > 0 && i <= menu.Count) { RunOne(menu, i - 1); } } } }