diff --git a/app/src/main/java/sudoku/Solver.java b/app/src/main/java/sudoku/Solver.java index 0f4ad33..2c9bb37 100644 --- a/app/src/main/java/sudoku/Solver.java +++ b/app/src/main/java/sudoku/Solver.java @@ -12,7 +12,11 @@ public class Solver implements SudokuSolver { /** {@inheritDoc} */ @Override - public void setBoard(int[][] board) { + public void setBoard(int[][] board) throws IllegalArgumentException, NullPointerException { + if (board == null) + throw new NullPointerException("Board cannot be null"); + if (board.length != 9 || board[0].length != 9) + throw new IllegalArgumentException("Board must be 9x9"); this.board = board; } @@ -28,7 +32,7 @@ public class Solver implements SudokuSolver { board = new int[9][9]; } - /*{@inheritDoc} */ + /* {@inheritDoc} */ @Override public boolean solve() { return solve(0, 0); @@ -107,7 +111,7 @@ public class Solver implements SudokuSolver { } // Recursively call randomizeBoard() until we get a solvable board - // This is expensive, and there should be some voodoo magic that computes this in n^2 time + // This is expensive, and there should be a better way to do this if (!isSolvable()) { randomizeBoard(difficulty); } diff --git a/app/src/test/java/sudoku/SolverTest.java b/app/src/test/java/sudoku/SolverTest.java index c8a9dff..af637e1 100644 --- a/app/src/test/java/sudoku/SolverTest.java +++ b/app/src/test/java/sudoku/SolverTest.java @@ -106,4 +106,11 @@ class SolverTest { solver.set(7, 1, 8); assertFalse(solver.solve()); } + + @Test + void setBoardInvalidInputThrowsTest() { + Solver solver = new Solver(); + assertThrows(NullPointerException.class, () -> solver.setBoard(null)); + assertThrows(IllegalArgumentException.class, () -> solver.setBoard(new int[8][8])); + } }