|
|
@@ -1,5 +1,3 @@
|
|
|
-import unittest
|
|
|
-
|
|
|
from sandbox import sudoku_solver
|
|
|
|
|
|
board_1 = [
|
|
|
@@ -77,73 +75,73 @@ solution_3 = [
|
|
|
empty = ["." * 9 for i in range(9)]
|
|
|
|
|
|
|
|
|
-class test_sudoku_solver(unittest.TestCase):
|
|
|
- def test_simple(self):
|
|
|
- board = sudoku_solver.Board()
|
|
|
- board.set_initial(board_1)
|
|
|
- row = board.get_row(0)
|
|
|
- self.assertEqual(row, board_1[0])
|
|
|
- col = board.get_col(0)
|
|
|
- self.assertEqual(col, "..5.7....")
|
|
|
- block = board.get_block(0, 0)
|
|
|
- self.assertEqual(block, [".1.", "...", "54."])
|
|
|
- block = board.get_block(4, 6)
|
|
|
- self.assertEqual(block, ["95.", "1.4", "2.."])
|
|
|
-
|
|
|
- def test_simple_set(self):
|
|
|
- board = sudoku_solver.Board()
|
|
|
- board.set_initial(board_1)
|
|
|
- board.set_cell(5, 7, "6")
|
|
|
- row = board.get_row(5)
|
|
|
- self.assertEqual(row, ".89...26.")
|
|
|
-
|
|
|
- def test_possibilities(self):
|
|
|
- board = sudoku_solver.Board()
|
|
|
- board.set_initial(board_1)
|
|
|
- p = board.get_possibilities(1, 4)
|
|
|
- self.assertEqual(p, {"1", "4", "5"})
|
|
|
-
|
|
|
- def test_all_possibilities(self):
|
|
|
- board = sudoku_solver.Board()
|
|
|
- board.set_initial(board_1)
|
|
|
- p = board.get_all_possibilities()
|
|
|
- self.assertEqual(p[1][4], {"1", "4", "5"})
|
|
|
-
|
|
|
- def test_unique_cell(self):
|
|
|
- board = sudoku_solver.Board()
|
|
|
- board.set_initial(board_1)
|
|
|
- solving_steps = [
|
|
|
- (5, 7, "6"),
|
|
|
- (4, 7, "8"),
|
|
|
- (4, 5, "9"),
|
|
|
- (2, 5, "1"),
|
|
|
- (2, 3, "9"),
|
|
|
- (2, 7, "2"),
|
|
|
- (6, 5, "4"),
|
|
|
- (0, 5, "5"),
|
|
|
- (1, 4, "4"),
|
|
|
- ]
|
|
|
- for x, y, v in solving_steps:
|
|
|
- cell = board.get_unique_cell()
|
|
|
- self.assertEqual(cell, (x, y))
|
|
|
- board.set_cell(x, y, v)
|
|
|
-
|
|
|
- def test_solve(self):
|
|
|
- board = sudoku_solver.Board()
|
|
|
- board.set_initial(board_2)
|
|
|
- b = board.solve()
|
|
|
- self.assertEqual(b, solution_2)
|
|
|
-
|
|
|
- board = sudoku_solver.Board()
|
|
|
- board.set_initial(board_1)
|
|
|
- b = board.solve()
|
|
|
- self.assertEqual(b, solution_1)
|
|
|
-
|
|
|
- board = sudoku_solver.Board()
|
|
|
- board.set_initial(board_3)
|
|
|
- b = board.solve()
|
|
|
- self.assertEqual(b, solution_3)
|
|
|
-
|
|
|
-
|
|
|
-if __name__ == "__main__":
|
|
|
- unittest.main()
|
|
|
+def test_simple():
|
|
|
+ board = sudoku_solver.Board()
|
|
|
+ board.set_initial(board_1)
|
|
|
+ row = board.get_row(0)
|
|
|
+ assert row == board_1[0]
|
|
|
+ col = board.get_col(0)
|
|
|
+ assert col == "..5.7...."
|
|
|
+ block = board.get_block(0, 0)
|
|
|
+ assert block == [".1.", "...", "54."]
|
|
|
+ block = board.get_block(4, 6)
|
|
|
+ assert block == ["95.", "1.4", "2.."]
|
|
|
+
|
|
|
+
|
|
|
+def test_simple_set():
|
|
|
+ board = sudoku_solver.Board()
|
|
|
+ board.set_initial(board_1)
|
|
|
+ board.set_cell(5, 7, "6")
|
|
|
+ row = board.get_row(5)
|
|
|
+ assert row == ".89...26."
|
|
|
+
|
|
|
+
|
|
|
+def test_possibilities():
|
|
|
+ board = sudoku_solver.Board()
|
|
|
+ board.set_initial(board_1)
|
|
|
+ p = board.get_possibilities(1, 4)
|
|
|
+ assert p == {"1", "4", "5"}
|
|
|
+
|
|
|
+
|
|
|
+def test_all_possibilities():
|
|
|
+ board = sudoku_solver.Board()
|
|
|
+ board.set_initial(board_1)
|
|
|
+ p = board.get_all_possibilities()
|
|
|
+ assert p[1][4] == {"1", "4", "5"}
|
|
|
+
|
|
|
+
|
|
|
+def test_unique_cell():
|
|
|
+ board = sudoku_solver.Board()
|
|
|
+ board.set_initial(board_1)
|
|
|
+ solving_steps = [
|
|
|
+ (5, 7, "6"),
|
|
|
+ (4, 7, "8"),
|
|
|
+ (4, 5, "9"),
|
|
|
+ (2, 5, "1"),
|
|
|
+ (2, 3, "9"),
|
|
|
+ (2, 7, "2"),
|
|
|
+ (6, 5, "4"),
|
|
|
+ (0, 5, "5"),
|
|
|
+ (1, 4, "4"),
|
|
|
+ ]
|
|
|
+ for x, y, v in solving_steps:
|
|
|
+ cell = board.get_unique_cell()
|
|
|
+ assert cell == (x, y)
|
|
|
+ board.set_cell(x, y, v)
|
|
|
+
|
|
|
+
|
|
|
+def test_solve():
|
|
|
+ board = sudoku_solver.Board()
|
|
|
+ board.set_initial(board_2)
|
|
|
+ b = board.solve()
|
|
|
+ assert b == solution_2
|
|
|
+
|
|
|
+ board = sudoku_solver.Board()
|
|
|
+ board.set_initial(board_1)
|
|
|
+ b = board.solve()
|
|
|
+ assert b == solution_1
|
|
|
+
|
|
|
+ board = sudoku_solver.Board()
|
|
|
+ board.set_initial(board_3)
|
|
|
+ b = board.solve()
|
|
|
+ assert b == solution_3
|