예제 #1
0
        static object parseParam(ref int i, ParameterInfo p, TestingWindow Window)
        {
            Window.WriteLine();
again:
            Window.RememberState();
            parse2(p, out var res, out var o, Window);

            switch (o)
            {
            case ParseResult.DEFAULT: goto case ParseResult.OK;

            case ParseResult.OK: return(res);

            case ParseResult.BAD:
                //long diff = Window.CursorTop - cstart;
                //for(int i = 0; i < diff; i++) { Window.Write("\b"); }
                Window.RestoreState();
                Window.WriteLine($"\"{res}\" has bad input format! Try again");
                break;

            case ParseResult.CANCEL:
                i -= 2;
                Window.RestoreState();
                return(null);

            default: throw new NotImplementedException();
            }

            goto again;
        }
예제 #2
0
        public static void ChooseMethods(IEnumerable <TestMethodExt> mtds, TestingWindow w)
        {
            w.Start();
            var methods = mtds.ToArray();

again:
            w.WriteLine();
            w.RememberState();
            w.WriteLine("Choose method:");
            for (int i = 0; i < methods.Length; i++)
            {
                w.WriteLine($"{i + 1}: {methods[i].Name}");
            }
            w.Write(">");
            var answ = w.ReadLine();

            if (int.TryParse(answ, out var ch) && ch <= methods.Length && ch > 0)
            {
                methods[ch - 1].InvokeWithConsole();
            }
            else
            {
                w.RestoreState();
                w.WriteLine($"\"{answ}\" is really bad choice! Try again");
                goto again;
            }
        }