public void Sort_WithNullString_NullArgumentException(string textQuery)
        {
            //Arrange
            ITextSorter lenghtSorter = new WordLengthSorter();

            //Action
            Exception ex = Assert.Catch <Exception>(() => lenghtSorter.Sort(textQuery));

            //Assert
            StringAssert.Contains(TextConstants.TEXT_NULL_ERROR, ex.Message);
        }
        public void Sort_WithSpaceDelimiterForWords_FirstWordShorter(string textQuery, string expectingWord)
        {
            //Arrange
            ITextSorter lenghtSorter = new WordLengthSorter();

            //Action
            string sorted    = lenghtSorter.Sort(textQuery);
            string firstword = sorted.Split(TextConstants.SPLITTER)[0];

            //Assert
            Assert.True(firstword == expectingWord);
        }
        public void Sort_WithSpaceDelimiterForWords_WordLenghtIsIncremental(string textQuery)
        {
            //Arrange
            ITextSorter lenghtSorter = new WordLengthSorter();

            //Action
            string sorted = lenghtSorter.Sort(textQuery);

            string[] words            = sorted.Split(TextConstants.SPLITTER);
            bool     incrementalOrder = true;

            for (int i = 1; i < words.Length; i++)
            {
                if (words[i - 1].Length > words[i].Length)
                {
                    incrementalOrder = false;
                }
            }

            //Assert
            Assert.IsTrue(incrementalOrder);
        }
        private ITextSorter InstanceCreateTextSorter(eSortMode sortMode)
        {
            ITextSorter newInstance = null;

            switch (sortMode)
            {
            case eSortMode.AlphabeticAsc:
                newInstance = new AlphabeticAscendentSorter();
                break;

            case eSortMode.AlphabeticDesc:
                newInstance = new AlphabeticDescendentSorter();
                break;

            case eSortMode.LenghtAsc:
                newInstance = new WordLengthSorter();
                break;

            default:
                throw new NotImplementedException(TextConstants.SORTER_CRITERIA_NOTIMPLEMENTED);
            }

            return(newInstance);
        }