public void TestNonUniquePalindromes()
        {
            string s   = "aaa";
            var    res = LongestUniquePalindromesFinder.GetLongestUniquePalindromes(numberOfPalindromes, s);
            LongestUniquePalindromes expected = new LongestUniquePalindromes();

            expected.Add(new PalindromeData(0, 3, "aaa"));
            expected.Add(new PalindromeData(0, 0, string.Empty));
            Assert.Equal(expected.ToString(), res.ToString());
        }
        public void TestPalindromeContainingExactlyKPalindromes()
        {
            string s   = "aaabbbbcc";
            var    res = LongestUniquePalindromesFinder.GetLongestUniquePalindromes(numberOfPalindromes, s);
            LongestUniquePalindromes expected = new LongestUniquePalindromes();

            expected.Add(new PalindromeData(3, 4, "bbbb"));
            expected.Add(new PalindromeData(0, 3, "aaa"));
            expected.Add(new PalindromeData(7, 2, "cc"));

            Assert.Equal(expected.ToString(), res.ToString());
        }
        public void TestOnlyCharactersPalindromeContainingLessThanKPalindromes()
        {
            string s   = "ab";
            var    res = LongestUniquePalindromesFinder.GetLongestUniquePalindromes(numberOfPalindromes, s);
            LongestUniquePalindromes expected = new LongestUniquePalindromes();

            expected.Add(new PalindromeData(0, 1, "a"));
            expected.Add(new PalindromeData(1, 1, "b"));
            expected.Add(new PalindromeData(0, 0, string.Empty));

            Assert.Equal(expected.ToString(), res.ToString());
        }
        public void TestPalindromeFromSpecification()
        {
            string s   = "sqrrqabccbatudefggfedvwhijkllkjihxymnnmzpop";
            var    res = LongestUniquePalindromesFinder.GetLongestUniquePalindromes(numberOfPalindromes, s);
            LongestUniquePalindromes expected = new LongestUniquePalindromes();

            expected.Add(new PalindromeData(23, 10, "hijkllkjih"));
            expected.Add(new PalindromeData(13, 8, "defggfed"));
            expected.Add(new PalindromeData(5, 6, "abccba"));

            Assert.Equal(expected.ToString(), res.ToString());
        }
        public void TestPalindromeLongestButNotUnique()
        {
            string s   = "abcba4bcb";
            var    res = LongestUniquePalindromesFinder.GetLongestUniquePalindromes(numberOfPalindromes, s);
            LongestUniquePalindromes expected = new LongestUniquePalindromes();

            expected.Add(new PalindromeData(0, 5, "abcba"));
            expected.Add(new PalindromeData(5, 1, "4"));
            expected.Add(new PalindromeData(0, 0, string.Empty));

            Assert.Equal(expected.ToString(), res.ToString());
        }
        public void TestOnlyCharactersPalindromeContainingMoreThanKPalindromes()
        {
            string s   = "abcd";
            var    res = LongestUniquePalindromesFinder.GetLongestUniquePalindromes(numberOfPalindromes, s);
            LongestUniquePalindromes expected1 = new LongestUniquePalindromes();

            expected1.Add(new PalindromeData(0, 1, "a"));
            expected1.Add(new PalindromeData(1, 1, "b"));
            expected1.Add(new PalindromeData(2, 1, "c"));

            Assert.Equal(expected1.ToString(), res.ToString());

            //NOTE: this is not the only solution ( "a", "b", "d") or ("b", "c", "d") are also valid
            //if the implmentation changes, this test may fail.
            //TO DO: add to the test all sets of longest unique palindromes.
        }
        public void TestPalindromeContainingMoreThanKPalindromes()
        {
            string s   = "aaaabbbbbbcccddd";
            var    res = LongestUniquePalindromesFinder.GetLongestUniquePalindromes(numberOfPalindromes, s);

            LongestUniquePalindromes expected1 = new LongestUniquePalindromes();

            expected1.Add(new PalindromeData(4, 6, "bbbbbb"));
            expected1.Add(new PalindromeData(0, 4, "aaaa"));
            expected1.Add(new PalindromeData(10, 3, "ccc"));

            Assert.Equal(expected1.ToString(), res.ToString());

            //NOTE: this is not the only solution.
            //if the implmentation changes, this test may fail.
            //TO DO: add to the test all sets of longest unique palindromes.
        }
 public void TestNumberOfPalindromesOutOfRangeException()
 {
     string    s  = "abc";
     Exception ex = Assert.Throws <ArgumentOutOfRangeException>(() => LongestUniquePalindromesFinder.GetLongestUniquePalindromes(-1, s));
 }
 public void TestNullStringPalindromFinderException()
 {
     string    s  = null;
     Exception ex = Assert.Throws <ArgumentNullException>(() => LongestUniquePalindromesFinder.GetLongestUniquePalindromes(numberOfPalindromes, s));
 }