public void ApplyValidSingleStepSolutionTest() { var sudoku = (int[, ])_sudoku.Clone(); sudoku[4, 7] = 0; var sudokuPuzzle = new SudokuPuzzle(sudoku); var strategyWhichFindsNothing = new NakedTriple(); var strategyWhichReducesCandidates = new BasicElimination(); var strategyWhichFindsResult = new HiddenSingle(); sudokuPuzzle.ApplySingleStepSolution(strategyWhichFindsNothing.SolveSingleStep(sudokuPuzzle)); Assert.That(sudokuPuzzle.Steps, Is.Empty); Assert.That(sudokuPuzzle.NumberOfSteps, Is.Zero); sudokuPuzzle.ApplySingleStepSolution(strategyWhichReducesCandidates.SolveSingleStep(sudokuPuzzle)); Assert.That(sudokuPuzzle.Steps.Count, Is.EqualTo(1)); Assert.That(sudokuPuzzle.NumberOfSteps, Is.EqualTo(1)); Assert.That(sudokuPuzzle.Steps.Last().Strategy, Is.EqualTo(strategyWhichReducesCandidates.StrategyName)); Assert.That(sudokuPuzzle.Steps.Last().SolutionDescription, Is.Not.Empty); sudokuPuzzle.ApplySingleStepSolution(strategyWhichFindsResult.SolveSingleStep(sudokuPuzzle)); Assert.That(sudokuPuzzle.Steps.Count, Is.EqualTo(2)); Assert.That(sudokuPuzzle.NumberOfSteps, Is.EqualTo(2)); Assert.That(sudokuPuzzle.Steps.Last().Strategy, Is.EqualTo(strategyWhichFindsResult.StrategyName)); Assert.That(sudokuPuzzle.Cells[4, 7].Value, Is.EqualTo(5)); Assert.That(sudokuPuzzle.Steps.Last().SolutionDescription, Is.Not.Empty); }
public HiddenSingleDisplayer(DomainFacade displayer, HiddenSingle hiddenSingle) : base(displayer, hiddenSingle, "hidden-single") { _position = hiddenSingle.Position; _value = hiddenSingle.Value; _house = hiddenSingle.House; _explanationSteps.AddRange(new Action[] { Explain1, Explain2, Explain3 }); }
public void UndoSingleStepSolutionsWhichReturnsResult_UndoesResult_Test() { var sudoku = (int[, ])_sudoku.Clone(); sudoku[4, 7] = 0; var sudokuPuzzle = new SudokuPuzzle(sudoku); var strategyWhichFindsResult = new HiddenSingle(); sudokuPuzzle.ApplySingleStepSolution(strategyWhichFindsResult.SolveSingleStep(sudokuPuzzle)); Assert.That(sudokuPuzzle.Cells[4, 7].Value, Is.EqualTo(5)); var step = sudokuPuzzle.UndoLastSingleStepSolution(); Assert.That(step.Eliminations, Is.Null); Assert.That(step.Result, Is.Not.Null); Assert.That(step.Result.IndexOfRow, Is.EqualTo(4)); Assert.That(step.Result.IndexOfColumn, Is.EqualTo(7)); Assert.That(step.Strategy, Is.EqualTo(strategyWhichFindsResult.StrategyName)); Assert.That(step.SolutionDescription, Is.Not.Empty); Assert.That(sudokuPuzzle.Cells[4, 7].Value, Is.EqualTo(0)); }