Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 3
0
        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());
        }