예제 #1
0
파일: Program.cs 프로젝트: dadhi/ecsharp
        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);
        }
예제 #2
0
        private static void TestAssembly(Assembly assembly)
        {
            var messageSink  = new ConsoleMessageSink();
            var assemblyInfo = new ReflectionAssemblyInfo(assembly);
            var framework    = new XunitTestFramework(messageSink);
            var executor     = new XunitTestFrameworkExecutor(assembly.GetName(), new NullSourceInformationProvider(), messageSink);

            var executionOptions = TestFrameworkOptions.ForExecution();
            var discoveryOptions = TestFrameworkOptions.ForDiscovery();

            executor.RunAll(messageSink, discoveryOptions, executionOptions);

            messageSink.Finished.WaitOne();
        }
예제 #3
0
        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);
        }
예제 #4
0
        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(G.HexDigitChar(i + 1) + ". " + menu[i].Key);
                }
                Console.WriteLine("Space. Run all tests");

                ConsoleKeyInfo k;
                Console.WriteLine((k = Console.ReadKey(true)).KeyChar);
                if (k.Key == ConsoleKey.Escape || k.Key == ConsoleKey.Enter)
                {
                    break;
                }
                else if (k.KeyChar == ' ')
                {
                    for (int i = 0; i < menu.Count; i++)
                    {
                        Console.WriteLine();
                        ConsoleMessageSink.WriteColoredMessage(ConsoleColor.White, i + 1, menu[i].Key);
                        menu[i].Value();
                    }
                }
                else
                {
                    int i = G.HexDigitValue(k.KeyChar);
                    if (i > 0 && i <= menu.Count)
                    {
                        menu[i - 1].Value();
                    }
                }
            }
        }
예제 #5
0
 private static void RunOne(IList <Pair <string, Action> > menu, int i)
 {
     Console.WriteLine();
     ConsoleMessageSink.WriteColoredMessage(ConsoleColor.White, i + 1, menu[i].Key);
     menu[i].Value();
 }