예제 #1
0
    public void FindAllAnagrams_NoWords_ReturnsEmptyResult(IAnagramalist sut)
    {
        var result = sut.FindAllAnagrams(new string[0]);

        Assert.IsNotNull(result);
        Assert.IsEmpty(result);
    }
예제 #2
0
        public static TestResult RunMultileTests(IAnagramalist sut, string[] words, int testRepeatCount, int expectedNumberOfAnagrams)
        {
            // run the anagramalist here so the JITer will compile all code
            var resultLost = RunSingleTest(sut, words);

            double sumSeconds = 0;
            var    results    = new List <SingleTestResult>();

            for (int i = 1; i <= testRepeatCount; i++)
            {
                var result = RunSingleTest(sut, words);
                results.Add(result);
                sumSeconds += result.Time.TotalSeconds;
                if (result.Anagrams.Length != expectedNumberOfAnagrams)
                {
                    Console.WriteLine("Wrong Number of anagrams!");
                    Console.WriteLine(result.Anagrams.Length);
                }

                Console.SetCursorPosition(0, Console.CursorTop);
                Console.Write(
                    $"test {i} of {testRepeatCount}    last run: {result.Time.TotalSeconds}s average: {sumSeconds / (i)}s          ");
            }

            Console.WriteLine();

            var testResult = TestResult.Create(results);

            return(testResult);
        }
예제 #3
0
    public void FindAllAnagrams_3WordsInInputWithSameLetters_Returns3WordsAnagram(IAnagramalist sut)
    {
        string[] input = new [] { "word", "drow", "drwo" };

        var result = sut.FindAllAnagrams(input);

        Assert.IsTrue(result.Any(x => x.Contains("word") && x.Contains("drwo") && x.Contains("drow")));
    }
예제 #4
0
    public void FindAllAnagrams_OnePossibleAnagramInInput_ReturnsAnagram(IAnagramalist sut)
    {
        string[] input = new [] { "word", "drow" };

        var result = sut.FindAllAnagrams(input);

        Assert.IsTrue(result.Any(x => x.Contains("word") && x.Contains("drow")));
    }
예제 #5
0
        private static SingleTestResult RunSingleTest(IAnagramalist sut, string[] words)
        {
            var sw = new Stopwatch();

            sw.Start();
            var allAnagrams = sut.FindAllAnagrams(words);

            sw.Stop();
            return(new SingleTestResult
            {
                Anagrams = allAnagrams,
                Time = sw.Elapsed
            });
        }
예제 #6
0
    public void FindAllAnagrams_FirstWordHasSameLengthButHasDifferentLetters_AnagramIsReturnedAnyway(IAnagramalist sut)
    {
        string[] input = new [] { "xxxx", "word", "drow" };

        var result = sut.FindAllAnagrams(input);

        CollectionAssert.AreEqual(new [] { "word drow" }, result);
    }
예제 #7
0
    public void FindAllAnagrams_WordsHasSameLengthButThereIsNoAnagrams_ReturnsEmptyArray(IAnagramalist sut)
    {
        string[] input = new [] { "word", "yyyy", "xxxx" };

        var result = sut.FindAllAnagrams(input);

        Assert.IsEmpty(result);
    }
예제 #8
0
    public void FindAllAnagrams_NonMachingWordInInputWithSameLength_Returns2WordsAnagram(IAnagramalist sut)
    {
        string[] input = new [] { "word", "drow", "xxxx" };

        var result = sut.FindAllAnagrams(input);

        Assert.IsTrue(result.Any(x => x.Contains("word") && x.Contains("drow")));
    }