public void SudokuPuzzle_CanCloneItself() { var puzzle = new SudokuPuzzle(); puzzle.SetValue(1, 4, SudokuValue.NINE); puzzle.SetValue(2, 3, SudokuValue.FIVE); var clone = puzzle.Clone() as SudokuPuzzle; puzzle.ClearBoard(); Assert.AreEqual(SudokuValue.NINE, clone.GetValue(1, 4)); Assert.AreEqual(SudokuValue.FIVE, clone.GetValue(2, 3)); }
public static SudokuPuzzle MakeSolvedPuzzle() { // known solution from: http://www.sudokukingdom.com/images/rules_solved.jpg var rows = new SudokuValue[][] { new SudokuValue [] { SudokuValue.TWO, SudokuValue.FOUR, SudokuValue.EIGHT, SudokuValue.THREE, SudokuValue.NINE, SudokuValue.FIVE, SudokuValue.SEVEN, SudokuValue.ONE, SudokuValue.SIX }, new SudokuValue [] { SudokuValue.FIVE, SudokuValue.SEVEN, SudokuValue.ONE, SudokuValue.SIX, SudokuValue.TWO, SudokuValue.EIGHT, SudokuValue.THREE, SudokuValue.FOUR, SudokuValue.NINE }, new SudokuValue [] { SudokuValue.NINE, SudokuValue.THREE, SudokuValue.SIX, SudokuValue.SEVEN, SudokuValue.FOUR, SudokuValue.ONE, SudokuValue.FIVE, SudokuValue.EIGHT, SudokuValue.TWO }, new SudokuValue [] { SudokuValue.SIX, SudokuValue.EIGHT, SudokuValue.TWO, SudokuValue.FIVE, SudokuValue.THREE, SudokuValue.NINE, SudokuValue.ONE, SudokuValue.SEVEN, SudokuValue.FOUR }, new SudokuValue [] { SudokuValue.THREE, SudokuValue.FIVE, SudokuValue.NINE, SudokuValue.ONE, SudokuValue.SEVEN, SudokuValue.FOUR, SudokuValue.SIX, SudokuValue.TWO, SudokuValue.EIGHT }, new SudokuValue [] { SudokuValue.SEVEN, SudokuValue.ONE, SudokuValue.FOUR, SudokuValue.EIGHT, SudokuValue.SIX, SudokuValue.TWO, SudokuValue.NINE, SudokuValue.FIVE, SudokuValue.THREE }, new SudokuValue [] { SudokuValue.EIGHT, SudokuValue.SIX, SudokuValue.THREE, SudokuValue.FOUR, SudokuValue.ONE, SudokuValue.SEVEN, SudokuValue.TWO, SudokuValue.NINE, SudokuValue.FIVE }, new SudokuValue [] { SudokuValue.ONE, SudokuValue.NINE, SudokuValue.FIVE, SudokuValue.TWO, SudokuValue.EIGHT, SudokuValue.SIX, SudokuValue.FOUR, SudokuValue.THREE, SudokuValue.SEVEN }, new SudokuValue [] { SudokuValue.FOUR, SudokuValue.TWO, SudokuValue.SEVEN, SudokuValue.NINE, SudokuValue.FIVE, SudokuValue.THREE, SudokuValue.EIGHT, SudokuValue.SIX, SudokuValue.ONE } }; var puzzle = new SudokuPuzzle(); for (int i = 0; i < rows.Length; i++) { for (int j = 0; j < rows.Length; j++) { puzzle.SetValue(i, j, rows[i][j]); } } return puzzle; }
public void SudokuPuzzle_CanSetValueForCell() { var puzzle = new SudokuPuzzle(); puzzle.SetValue(0, 3, SudokuValue.NINE); Assert.AreEqual(SudokuValue.NINE, puzzle.GetValue(0, 3)); }
public void SudokuPuzzle_CanClearBoard() { var puzzle = new SudokuPuzzle(); puzzle.SetValue(0, 3, SudokuValue.NINE); puzzle.SetValue(0, 4, SudokuValue.EIGHT); puzzle.ClearBoard(); for (int i = 0; i < puzzle.CurrentBoard.Length; i++) { // board is a square... for (int j = 0; j < puzzle.CurrentBoard.Length; j++) { Assert.AreEqual(SudokuValue.UNASSIGNED, puzzle.CurrentBoard[i][j]); } } }
public void SudokuSolver_ClonesArgumentToAvoidModifyingOriginal() { var puzzle = new SudokuPuzzle(); puzzle.SetValue(1, 4, SudokuValue.NINE); var solver = new SudokuSolver.SudokuSolver(puzzle); puzzle.ClearBoard(); Assert.AreEqual(SudokuValue.NINE, solver.Puzzle.GetValue(1, 4)); }
public object Clone() { var puzzle = new SudokuPuzzle(); for (int i = 0; i < NUM_ROWS; i++) { for (int j = 0; j < NUM_ROWS; j++) { puzzle.SetValue(i, j, this.GetValue(i, j)); } } return puzzle; }
public static SudokuPuzzle MakeSolvablePuzzle() { var puzzle = new SudokuPuzzle(); // set some values puzzle.SetValue(0, 0, SudokuValue.EIGHT); puzzle.SetValue(0, 2, SudokuValue.FOUR); puzzle.SetValue(0, 7, SudokuValue.FIVE); puzzle.SetValue(1, 3, SudokuValue.FOUR); puzzle.SetValue(1, 6, SudokuValue.SEVEN); puzzle.SetValue(1, 8, SudokuValue.SIX); puzzle.SetValue(2, 1, SudokuValue.SEVEN); puzzle.SetValue(2, 3, SudokuValue.TWO); puzzle.SetValue(2, 4, SudokuValue.FIVE); puzzle.SetValue(2, 5, SudokuValue.NINE); puzzle.SetValue(8, 1, SudokuValue.FOUR); puzzle.SetValue(8, 5, SudokuValue.FIVE); puzzle.SetValue(8, 8, SudokuValue.SEVEN); return puzzle; }
private SudokuPuzzle LoadPuzzleState() { var puzzle = new SudokuPuzzle(); for (int i = 0; i < this.Cells.Length; i++) { if (!string.IsNullOrEmpty(this.Cells[i].Text)) { // mark cell as supplied var row = i / puzzle.CurrentBoard.Length; var col = i % puzzle.CurrentBoard.Length; var value = (SudokuValue)Enum.ToObject(typeof(SudokuValue), int.Parse(this.Cells[i].Text)); puzzle.SetValue(row, col, value); } } return puzzle; }
public void SudokuPuzzle_SettingValueOutOfBoundsThrowsException() { var puzzle = new SudokuPuzzle(); puzzle.SetValue(0, 9, SudokuValue.NINE); }
public void SudokuPuzzle_ValidatesSameValueInRow() { var puzzle = new SudokuPuzzle(); puzzle.SetValue(0, 3, SudokuValue.NINE); Assert.IsFalse(puzzle.IsValidValue(SudokuValue.NINE, 0, 1)); }
public void SudokuPuzzle_ValidatesSameValueInBox() { var puzzle = new SudokuPuzzle(); puzzle.SetValue(1, 4, SudokuValue.NINE); Assert.IsFalse(puzzle.IsValidValue(SudokuValue.NINE, 2, 3)); }