Beispiel #1
0
        //private const string inputFile = "WordListAllEnglishWords.txt";

        static void Main(string[] args)
        {
            Console.WriteLine("*** Tests Started {0} ***\n\n", DateTime.Now);

            var anagram = new Anagram();
            var testsToRun = testDataList;                                  // All Tests
            //var testsToRun = testDataList.Where(x => x.TestNumber == 1);    // Specific Test
            //var testsToRun = testDataList.Where(x => x.ExpectedResult);     // Positive Tests
            //var testsToRun = testDataList.Where(x => !x.ExpectedResult);    // Negative Tests

            foreach (var testData in testsToRun)
            {
                Console.WriteLine("{0}\tSTARTING TEST {1}\n", DateTime.Now, testData.TestNumber);

                anagram.FindSecretPhrase(testData.HintPhrase, testData.MD5HashKey, testData.InputFile);
                anagram.PrintFullStats();

                testData.ReturnedResult = anagram.SecretPhraseFound;
                testData.ReturnedSecretPhrase = anagram.SecretPhrase;
                testData.TotalTime = anagram.TotalTime;
                testData.WordsFiltered = anagram.WordsFiltered;
                testData.NodesAdded = anagram.NumNodes;
            }

            if (!testsToRun.Any(x => !x.TestPassed))
            {
                Console.WriteLine("ALL TESTS PASSED\n");
            }

            var headerRow = new string[] { "Test #", "Result", "Total Time", "Words Filtered", "Nodes Added" };

            TablePrinter.PrintLine();
            TablePrinter.PrintRow(headerRow);
            TablePrinter.PrintLine();

            foreach (var testData in testsToRun)
            {
                TablePrinter.PrintRow(new string[]
                {
                    testData.TestNumber.ToString(),
                    testData.TestPassed ? " Passed " : "*Failed*",
                    testData.TotalTime.ToString(),
                    testData.WordsFiltered.ToString(),
                    testData.NodesAdded.ToString()
                });
            }

            TablePrinter.PrintLine();

            var doubleAverageTicks = testsToRun.Average(timeSpan => timeSpan.TotalTime.Ticks);
            var longAverageTicks = Convert.ToInt64(doubleAverageTicks);
            var averageTime = new TimeSpan(longAverageTicks);

            Console.WriteLine(string.Format("\nAverage Time = {0}", averageTime));

            Console.WriteLine("\n\n*** Tests Ended {0} ***\n", DateTime.Now);
            Console.ReadLine();
        }