IEnumerable <ISortProblem> ISortProblem.GetReducedProblems() { var result = new ISortProblem[2]; result[0] = new SplitByMedianItem(LeftSplit); result[1] = new SplitByMedianItem(RightSplit); return(result); }
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; }
public void ReduceThenSolveReducedProblems(ISortProblem sortProblem, ISortProblemSolver reducedSortProblemSolver) { if (sortProblem.IsBasicCase) { return; } var reducedProblems = sortProblem.GetReducedProblems(); foreach (var problem in reducedProblems) { reducedSortProblemSolver.SolveReducedProblem(problem); } }
IEnumerable<ISortProblem> ISortProblem.GetReducedProblems() { var result = new ISortProblem[2]; result[0] = new SplitByMedianItem(LeftSplit); result[1] = new SplitByMedianItem(RightSplit); return result; }
public void SetExpectedCall_CalculateSortProblemReduction(ISortProblem parameterExpectedValue) { calculateSortProblemReduction.Add(parameterExpectedValue); ++calculateSortProblemReductionExpectedCallCount; }
void ISortProblemSolver.SolveReducedProblem(ISortProblem sortProblem) { RecursivelySolveSortProblem(sortProblem); }
public void RecursivelySolveSortProblem(ISortProblem sortProblem) { var reducedSortProblemSolver = this; reducedSortProblemSolver.ReduceThenSolveReducedProblems(sortProblem, reducedSortProblemSolver); }