public void Should_SortArray_When_OnlyOneSwapIsRequired(int[] asc, int[] desc)
        {
            var question = new Question_ModifiedBubbleSort();

            DoTest(question, asc, desc);
            Assert.Equal(1, question.LastSwapCount);
        }
        public void Should_NotSortArray_When_IsSortedAlready(int[] asc, int[] desc)
        {
            var question = new Question_ModifiedBubbleSort();

            DoTest(question, asc, desc);
            Assert.Equal(0, question.LastSwapCount);
        }
        private void DoTest <T>(Question_ModifiedBubbleSort question, T[] ascArray, T[] descArray) where T : IComparable
        {
            Output.WriteLine("Ascending Before: " + String.Join(", ", ascArray));
            Output.WriteLine("Descending Before: " + String.Join(", ", descArray));

            question.BubbleSort(ascArray, false);
            question.BubbleSort(descArray, true);

            Output.WriteLine("Ascending After: " + String.Join(", ", ascArray));
            Output.WriteLine("Descending After: " + String.Join(", ", descArray));

            Assert.True(IsSorted(ascArray));
            Assert.True(IsSorted(descArray, true));
        }
        public void Should_Sort_When_ElementsAreOutOfOrder(int[] asc, int[] desc)
        {
            var question = new Question_ModifiedBubbleSort();

            DoTest(question, asc, desc);
        }