コード例 #1
0
        IEnumerable <ISortProblem> ISortProblem.GetReducedProblems()
        {
            var result = new ISortProblem[2];

            result[0] = new SplitByMedianItem(LeftSplit);
            result[1] = new SplitByMedianItem(RightSplit);
            return(result);
        }
コード例 #2
0
        void ISortProblemSolver.SolveReducedProblem(ISortProblem sortProblem)
        {
            if (sortProblem != calculateSortProblemReduction[calculateSortProblemReductionCallCount])
            {
                throw new InvalidOperationException(string.Format("Expected value for sortProblem: {0}, actual: {1}", calculateSortProblemReduction[calculateSortProblemReductionCallCount], sortProblem));
            }

            ++calculateSortProblemReductionCallCount;
        }
コード例 #3
0
        void ISortProblemSolver.SolveReducedProblem(ISortProblem sortProblem)
        {
            if (sortProblem != calculateSortProblemReduction[calculateSortProblemReductionCallCount])
            {
                throw new InvalidOperationException(string.Format("Expected value for sortProblem: {0}, actual: {1}", calculateSortProblemReduction[calculateSortProblemReductionCallCount], sortProblem));
            }

            ++calculateSortProblemReductionCallCount;
        }
コード例 #4
0
        public void ReduceThenSolveReducedProblems(ISortProblem sortProblem, ISortProblemSolver reducedSortProblemSolver)
        {
            if (sortProblem.IsBasicCase)
            {
                return;
            }

            var reducedProblems = sortProblem.GetReducedProblems();
            foreach (var problem in reducedProblems)
            {
                reducedSortProblemSolver.SolveReducedProblem(problem);
            }
        }
コード例 #5
0
        public void ReduceThenSolveReducedProblems(ISortProblem sortProblem, ISortProblemSolver reducedSortProblemSolver)
        {
            if (sortProblem.IsBasicCase)
            {
                return;
            }

            var reducedProblems = sortProblem.GetReducedProblems();

            foreach (var problem in reducedProblems)
            {
                reducedSortProblemSolver.SolveReducedProblem(problem);
            }
        }
コード例 #6
0
 IEnumerable<ISortProblem> ISortProblem.GetReducedProblems()
 {
     var result = new ISortProblem[2];
     result[0] = new SplitByMedianItem(LeftSplit);
     result[1] = new SplitByMedianItem(RightSplit);
     return result;
 }
コード例 #7
0
 public void SetExpectedCall_CalculateSortProblemReduction(ISortProblem parameterExpectedValue)
 {
     calculateSortProblemReduction.Add(parameterExpectedValue);
     ++calculateSortProblemReductionExpectedCallCount;
 }
コード例 #8
0
 void ISortProblemSolver.SolveReducedProblem(ISortProblem sortProblem)
 {
     RecursivelySolveSortProblem(sortProblem);
 }
コード例 #9
0
 public void RecursivelySolveSortProblem(ISortProblem sortProblem)
 {
     var reducedSortProblemSolver = this;
     reducedSortProblemSolver.ReduceThenSolveReducedProblems(sortProblem, reducedSortProblemSolver);
 }
コード例 #10
0
 public void SetExpectedCall_CalculateSortProblemReduction(ISortProblem parameterExpectedValue)
 {
     calculateSortProblemReduction.Add(parameterExpectedValue);
     ++calculateSortProblemReductionExpectedCallCount;
 }
コード例 #11
0
 void ISortProblemSolver.SolveReducedProblem(ISortProblem sortProblem)
 {
     RecursivelySolveSortProblem(sortProblem);
 }
コード例 #12
0
        public void RecursivelySolveSortProblem(ISortProblem sortProblem)
        {
            var reducedSortProblemSolver = this;

            reducedSortProblemSolver.ReduceThenSolveReducedProblems(sortProblem, reducedSortProblemSolver);
        }