public void SortHandler_Handle_SequenceHasNumbers_ReturnsSortResultWithExpectedValues() { IStringToCollectionParser <decimal> parser = new StubIStringToCollectionParser <decimal>() { ParseStringToCollectionString = (strSeq) => new decimal[] { 2, 1, 3 } }; IStepCounter stepCounter = new StubIStepCounter() { CountSwapOperation = () => { }, CountCompareOperation = () => { } }; ISortStrategyFactory factory = new StubISortStrategyFactory() { CreateSortSortAlgorithmEnumSortTypeEnumIStepCounter = (alg, type, counter) => new StubISortStrategy() { SortIEnumerableOfDecimal = (seq) => new StubISortResult() { CompareOperationsCountGet = () => 2, SwapOperationsCountGet = () => 1, SortedNumbersGet = () => new decimal[] { 1, 2, 3 } } } }; decimal[] expectedSequence = new decimal[] { 1, 2, 3 }; int expectedCompareCount = 2; int expectedSwapCount = 1; var handler = new SortHandler(parser, factory); ISortResult sortResult = handler.Handle("2 1 3", SortAlgorithmEnum.InsertionSort, SortTypeEnum.Ascending, stepCounter); Assert.AreEqual(expectedCompareCount, sortResult.CompareOperationsCount, "Comapare operations are not equal"); Assert.AreEqual(expectedSwapCount, sortResult.SwapOperationsCount, "Swap counts are not equal"); CollectionAssert.AreEqual(expectedSequence, sortResult.SortedNumbers.ToArray(), "Sequences are not equal."); }
public void SortStrategy_ConstructorISortTypeIStepCounter_SortTypeIsNull_ThrowArgumentNullException() { IStepCounter stepCounter = new StubIStepCounter() { CountSwapOperation = () => { }, CountCompareOperation = () => { } }; Assert.ThrowsException <ArgumentNullException>(() => GetSortStrategy(null, stepCounter)); }
public void SortHandler_Handle_SequenceIsNull_ThrowArgumentNullException() { IStringToCollectionParser <decimal> parser = new StubIStringToCollectionParser <decimal>(); IStepCounter stepCounter = new StubIStepCounter(); ISortStrategyFactory factory = new StubISortStrategyFactory(); var handler = new SortHandler(parser, factory); Assert.ThrowsException <ArgumentNullException>(() => handler.Handle(null, SortAlgorithmEnum.InsertionSort, SortTypeEnum.Ascending, stepCounter)); }
public void SortStrategyFactory_CreateSort_MergeSortValue_CreateMergeSortInstance() { ISortTypeFactory sortTypeFactory = CreateSortTypeFactory(); var sortStrategyFactory = new SortStrategyFactory(sortTypeFactory); IStepCounter stepCounter = new StubIStepCounter() { CountSwapOperation = () => { }, CountCompareOperation = () => { } }; ISortStrategy sortStrategy = sortStrategyFactory.CreateSort(SortAlgorithmEnum.MergeSort, SortTypeEnum.Ascending, stepCounter); Assert.IsInstanceOfType(sortStrategy, typeof(MergeSort)); }
public void SortStrategy_Sort_SequenceIsNull_ThrowArgumentNullException() { ISortType sortType = new StubISortType() { UpdateIEnumerableOfDecimal = (notUpdatedSequence) => notUpdatedSequence }; IStepCounter stepCounter = new StubIStepCounter() { CountSwapOperation = () => { }, CountCompareOperation = () => { } }; var sortStrategy = GetSortStrategy(sortType, stepCounter); Assert.ThrowsException <ArgumentNullException>(() => sortStrategy.Sort(null)); }
public void SortStrategy_Sort_SequenceIsEmpty_ReturnEmptySequence() { ISortType sortType = new StubISortType() { UpdateIEnumerableOfDecimal = (notUpdatedSequence) => notUpdatedSequence }; IStepCounter stepCounter = new StubIStepCounter() { CountSwapOperation = () => { }, CountCompareOperation = () => { } }; var sortStrategy = GetSortStrategy(sortType, stepCounter); var expectedSequence = new decimal[1]; ISortResult sortResult = sortStrategy.Sort((new decimal[1])); CollectionAssert.AreEqual(expectedSequence, sortResult.SortedNumbers.ToArray()); }