From 29d4e8d5a2c36df56af464432090803e86320076 Mon Sep 17 00:00:00 2001 From: Giulio Tantaro Date: Fri, 11 Oct 2024 16:13:08 +0200 Subject: [PATCH 1/3] Add tests Sudoku --- .../com/thealgorithms/others/SudokuTest.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/test/java/com/thealgorithms/others/SudokuTest.java diff --git a/src/test/java/com/thealgorithms/others/SudokuTest.java b/src/test/java/com/thealgorithms/others/SudokuTest.java new file mode 100644 index 000000000000..bc8be820403f --- /dev/null +++ b/src/test/java/com/thealgorithms/others/SudokuTest.java @@ -0,0 +1,74 @@ +package com.thealgorithms.others; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; + +public class SudokuTest { + + @Test + void testIsSafe2() { + int[][] board = { + {3, 0, 6, 5, 0, 8, 4, 0, 0}, + {5, 2, 0, 0, 0, 0, 0, 0, 0}, + {0, 8, 7, 0, 0, 0, 0, 3, 1}, + {0, 0, 3, 0, 1, 0, 0, 8, 0}, + {9, 0, 0, 8, 6, 3, 0, 0, 5}, + {0, 5, 0, 0, 9, 0, 6, 0, 0}, + {1, 3, 0, 0, 0, 0, 2, 5, 0}, + {0, 0, 0, 0, 0, 0, 0, 7, 4}, + {0, 0, 5, 2, 0, 6, 3, 0, 0} + }; + + assertFalse(Sudoku.isSafe(board, 0, 1, 3)); + assertTrue(Sudoku.isSafe(board, 1, 2, 1)); + assertThrows(ArrayIndexOutOfBoundsException.class, () -> { + Sudoku.isSafe(board, 10, 10, 5); + }); + assertThrows(ArrayIndexOutOfBoundsException.class, () -> { + Sudoku.isSafe(board, -1, 0, 5); + }); + } + + @Test + void testSolveSudoku() { + int[][] board = { + {3, 0, 6, 5, 0, 8, 4, 0, 0}, + {5, 2, 0, 0, 0, 0, 0, 0, 0}, + {0, 8, 7, 0, 0, 0, 0, 3, 1}, + {0, 0, 3, 0, 1, 0, 0, 8, 0}, + {9, 0, 0, 8, 6, 3, 0, 0, 5}, + {0, 5, 0, 0, 9, 0, 6, 0, 0}, + {1, 3, 0, 0, 0, 0, 2, 5, 0}, + {0, 0, 0, 0, 0, 0, 0, 7, 4}, + {0, 0, 5, 2, 0, 6, 3, 0, 0} + }; + + assertTrue(Sudoku.solveSudoku(board, board.length)); + assertEquals(1, board[0][1]); + assertThrows(ArrayIndexOutOfBoundsException.class, () -> { + Sudoku.solveSudoku(board, 10); + }); + assertTrue(Sudoku.solveSudoku(board, -1)); + } + + @Test + void testUnsolvableSudoku() { + int[][] unsolvableBoard = { + {5, 1, 6, 8, 4, 9, 7, 3, 2}, + {3, 0, 7, 6, 0, 5, 0, 0, 0}, + {8, 0, 9, 7, 0, 0, 0, 6, 5}, + {1, 3, 5, 0, 6, 0, 9, 0, 7}, + {4, 7, 2, 5, 9, 1, 0, 0, 6}, + {9, 6, 8, 3, 7, 0, 0, 5, 0}, + {2, 5, 3, 1, 8, 6, 0, 7, 4}, + {6, 8, 4, 2, 5, 7, 3, 9, 0}, + {7, 9, 1, 4, 3, 0, 5, 0, 0} + }; + + assertFalse(Sudoku.solveSudoku(unsolvableBoard, unsolvableBoard.length)); + } +} \ No newline at end of file From e0ccbb9c280bebc840d5b137b143b3a11d6c3be4 Mon Sep 17 00:00:00 2001 From: Giulio Tantaro Date: Fri, 11 Oct 2024 16:21:50 +0200 Subject: [PATCH 2/3] Fix --- src/test/java/com/thealgorithms/others/SudokuTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/others/SudokuTest.java b/src/test/java/com/thealgorithms/others/SudokuTest.java index bc8be820403f..cad3f5ae7771 100644 --- a/src/test/java/com/thealgorithms/others/SudokuTest.java +++ b/src/test/java/com/thealgorithms/others/SudokuTest.java @@ -71,4 +71,4 @@ void testUnsolvableSudoku() { assertFalse(Sudoku.solveSudoku(unsolvableBoard, unsolvableBoard.length)); } -} \ No newline at end of file +} From 83f32accc5b75c3ad942eed2a72e0fe36c6b279c Mon Sep 17 00:00:00 2001 From: Giulio Tantaro Date: Fri, 11 Oct 2024 16:29:39 +0200 Subject: [PATCH 3/3] Update file --- .../com/thealgorithms/others/SudokuTest.java | 48 +++---------------- 1 file changed, 6 insertions(+), 42 deletions(-) diff --git a/src/test/java/com/thealgorithms/others/SudokuTest.java b/src/test/java/com/thealgorithms/others/SudokuTest.java index cad3f5ae7771..5018b2768302 100644 --- a/src/test/java/com/thealgorithms/others/SudokuTest.java +++ b/src/test/java/com/thealgorithms/others/SudokuTest.java @@ -11,63 +11,27 @@ public class SudokuTest { @Test void testIsSafe2() { - int[][] board = { - {3, 0, 6, 5, 0, 8, 4, 0, 0}, - {5, 2, 0, 0, 0, 0, 0, 0, 0}, - {0, 8, 7, 0, 0, 0, 0, 3, 1}, - {0, 0, 3, 0, 1, 0, 0, 8, 0}, - {9, 0, 0, 8, 6, 3, 0, 0, 5}, - {0, 5, 0, 0, 9, 0, 6, 0, 0}, - {1, 3, 0, 0, 0, 0, 2, 5, 0}, - {0, 0, 0, 0, 0, 0, 0, 7, 4}, - {0, 0, 5, 2, 0, 6, 3, 0, 0} - }; + int[][] board = {{3, 0, 6, 5, 0, 8, 4, 0, 0}, {5, 2, 0, 0, 0, 0, 0, 0, 0}, {0, 8, 7, 0, 0, 0, 0, 3, 1}, {0, 0, 3, 0, 1, 0, 0, 8, 0}, {9, 0, 0, 8, 6, 3, 0, 0, 5}, {0, 5, 0, 0, 9, 0, 6, 0, 0}, {1, 3, 0, 0, 0, 0, 2, 5, 0}, {0, 0, 0, 0, 0, 0, 0, 7, 4}, {0, 0, 5, 2, 0, 6, 3, 0, 0}}; assertFalse(Sudoku.isSafe(board, 0, 1, 3)); assertTrue(Sudoku.isSafe(board, 1, 2, 1)); - assertThrows(ArrayIndexOutOfBoundsException.class, () -> { - Sudoku.isSafe(board, 10, 10, 5); - }); - assertThrows(ArrayIndexOutOfBoundsException.class, () -> { - Sudoku.isSafe(board, -1, 0, 5); - }); + assertThrows(ArrayIndexOutOfBoundsException.class, () -> { Sudoku.isSafe(board, 10, 10, 5); }); + assertThrows(ArrayIndexOutOfBoundsException.class, () -> { Sudoku.isSafe(board, -1, 0, 5); }); } @Test void testSolveSudoku() { - int[][] board = { - {3, 0, 6, 5, 0, 8, 4, 0, 0}, - {5, 2, 0, 0, 0, 0, 0, 0, 0}, - {0, 8, 7, 0, 0, 0, 0, 3, 1}, - {0, 0, 3, 0, 1, 0, 0, 8, 0}, - {9, 0, 0, 8, 6, 3, 0, 0, 5}, - {0, 5, 0, 0, 9, 0, 6, 0, 0}, - {1, 3, 0, 0, 0, 0, 2, 5, 0}, - {0, 0, 0, 0, 0, 0, 0, 7, 4}, - {0, 0, 5, 2, 0, 6, 3, 0, 0} - }; + int[][] board = {{3, 0, 6, 5, 0, 8, 4, 0, 0}, {5, 2, 0, 0, 0, 0, 0, 0, 0}, {0, 8, 7, 0, 0, 0, 0, 3, 1}, {0, 0, 3, 0, 1, 0, 0, 8, 0}, {9, 0, 0, 8, 6, 3, 0, 0, 5}, {0, 5, 0, 0, 9, 0, 6, 0, 0}, {1, 3, 0, 0, 0, 0, 2, 5, 0}, {0, 0, 0, 0, 0, 0, 0, 7, 4}, {0, 0, 5, 2, 0, 6, 3, 0, 0}}; assertTrue(Sudoku.solveSudoku(board, board.length)); assertEquals(1, board[0][1]); - assertThrows(ArrayIndexOutOfBoundsException.class, () -> { - Sudoku.solveSudoku(board, 10); - }); + assertThrows(ArrayIndexOutOfBoundsException.class, () -> { Sudoku.solveSudoku(board, 10); }); assertTrue(Sudoku.solveSudoku(board, -1)); } @Test void testUnsolvableSudoku() { - int[][] unsolvableBoard = { - {5, 1, 6, 8, 4, 9, 7, 3, 2}, - {3, 0, 7, 6, 0, 5, 0, 0, 0}, - {8, 0, 9, 7, 0, 0, 0, 6, 5}, - {1, 3, 5, 0, 6, 0, 9, 0, 7}, - {4, 7, 2, 5, 9, 1, 0, 0, 6}, - {9, 6, 8, 3, 7, 0, 0, 5, 0}, - {2, 5, 3, 1, 8, 6, 0, 7, 4}, - {6, 8, 4, 2, 5, 7, 3, 9, 0}, - {7, 9, 1, 4, 3, 0, 5, 0, 0} - }; + int[][] unsolvableBoard = {{5, 1, 6, 8, 4, 9, 7, 3, 2}, {3, 0, 7, 6, 0, 5, 0, 0, 0}, {8, 0, 9, 7, 0, 0, 0, 6, 5}, {1, 3, 5, 0, 6, 0, 9, 0, 7}, {4, 7, 2, 5, 9, 1, 0, 0, 6}, {9, 6, 8, 3, 7, 0, 0, 5, 0}, {2, 5, 3, 1, 8, 6, 0, 7, 4}, {6, 8, 4, 2, 5, 7, 3, 9, 0}, {7, 9, 1, 4, 3, 0, 5, 0, 0}}; assertFalse(Sudoku.solveSudoku(unsolvableBoard, unsolvableBoard.length)); }