public ResultOfCompare Compare(string stringOne, string stringTwo)
        {
            if (stringOne == null)
            {
                throw new ArgumentNullException(nameof(stringOne));
            }

            if (stringTwo == null)
            {
                throw new ArgumentNullException(nameof(stringTwo));
            }

            var result = new ResultOfCompare();

            if (CheckIfAreEqual(stringOne, stringTwo))
            {
                result.AreEqual = true;
                return(result);
            }

            CompareLength(result, stringOne, stringTwo);
            CheckIfAreReversed(result, stringOne, stringTwo);
            CheckIfAreAnagrams(result, stringOne, stringTwo);
            CheckIfAreEqualIgnoreCase(result, stringOne, stringTwo);
            CompareNumberOfVowel(result, stringOne, stringTwo);

            return(result);
        }
 private void CheckIfAreEqualIgnoreCase(ResultOfCompare result, string stringOne, string stringTwo)
 {
     if (stringOne.Equals(stringTwo, StringComparison.OrdinalIgnoreCase))
     {
         result.AddDifference(new Difference()
         {
             DifferenceType = DifferenceType.CaseInsensitiveEqual, Description = "Podane ciągi różnią się wielkością znaków"
         });
     }
 }
        private void CheckIfAreReversed(ResultOfCompare result, string stringOne, string stringTwo)
        {
            var reversed = new string(stringTwo.Reverse().ToArray());

            if (stringOne.Equals(reversed))
            {
                result.AddDifference(new Difference()
                {
                    DifferenceType = DifferenceType.Reversed, Description = "Ciągi są odwrócone"
                });
            }
        }
        private void CompareNumberOfVowel(ResultOfCompare result, string stringOne, string stringTwo)
        {
            int stringOneVowelCount = VowelCounter(stringOne);
            int stringTwoVowelCount = VowelCounter(stringTwo);

            if (stringOneVowelCount != stringTwoVowelCount)
            {
                result.AddDifference(new Difference()
                {
                    DifferenceType = DifferenceType.NumberOfVowel,
                    Description    = $"Ciągi różnią się ilością samogłosek, pierwszy ciąg zawiera {stringOneVowelCount} a drugi {stringTwoVowelCount}."
                });
            }
        }
        private void CompareLength(ResultOfCompare result, string stringOne, string stringTwo)
        {
            if (stringOne.Length != stringTwo.Length)
            {
                var lengthDifference = new Difference()
                {
                    DifferenceType = DifferenceType.Length
                };

                if (stringOne.Length > stringTwo.Length)
                {
                    lengthDifference.Description = String.Format($"Pierwszy ciąg znaków jest dłuższy od drugiego ciągu znaków o {stringOne.Length - stringTwo.Length} znaków");
                }
                else
                {
                    lengthDifference.Description = String.Format($"Drugi ciąg znaków jest dłuższy od pierwszego o {stringTwo.Length - stringOne.Length} znaków");
                }
                result.AddDifference(lengthDifference);
            }
        }
 private void CheckIfAreAnagrams(ResultOfCompare result, string stringOne, string stringTwo)
 {
     if (AreAnagrams(stringOne, stringTwo))
     {
         var anagrams = new Difference()
         {
             DifferenceType = DifferenceType.Anagrams
         };
         anagrams.Description = "Podane ciągi są anagramami";
         result.AddDifference(anagrams);
     }
     else
     {
         var notAnagrams = new Difference()
         {
             DifferenceType = DifferenceType.NotAnagrams
         };
         notAnagrams.Description = "Podane ciągi nie są anagramami";
         result.AddDifference(notAnagrams);
     }
 }