public void FindPalindromes_EmptyInputString_ThrowsArgumentException()
        {
            var mockFinder = new Mock <IPalindromeFinder>();
            var searcher   = new PalindromeSearcher(mockFinder.Object);

            searcher.FindPalindromes(String.Empty);
        }
        public void FindPalindromes_OverlappingEvenPalindromes_FindsAllPalindromes()
        {
            var finder   = new PalindromeFinder();
            var searcher = new PalindromeSearcher(finder);

            var results = searcher.FindPalindromes("123321123");

            Assert.AreEqual(2, results.Count);
            Assert.AreEqual(new PalindromeResult {
                Palindrome = "123321", StartIndex = 0, EndIndex = 5
            }, results[0]);
            Assert.AreEqual(new PalindromeResult {
                Palindrome = "321123", StartIndex = 3, EndIndex = 8
            }, results[1]);
        }
        public void FindPalindromes_GivenInputExample_FindsAllPalindromes()
        {
            var finder   = new PalindromeFinder();
            var searcher = new PalindromeSearcher(finder);

            var results = searcher.FindPalindromes("sqrrqabccbatudefggfedvwhijkllkjihxymnnmzpop");

            Assert.AreEqual(6, results.Count);
            Assert.AreEqual(new PalindromeResult {
                Palindrome = "hijkllkjih", StartIndex = 23, EndIndex = 32
            }, results[0]);
            Assert.AreEqual(new PalindromeResult {
                Palindrome = "defggfed", StartIndex = 13, EndIndex = 20
            }, results[1]);
            Assert.AreEqual(new PalindromeResult {
                Palindrome = "abccba", StartIndex = 5, EndIndex = 10
            }, results[2]);
        }