def test_verify_solution_easy_sudoku_empty_values_with_zero(self):
        raw_sudoku = ("""000000680
000073009
309000045
490000000
803050902
000000036
960000308
700680000
028000000""")
        sudoku_test_solve = BacktrakingAlgorithm(raw_sudoku, "0")
        square_result = [['1', '7', '2', '5', '4', '9', '6', '8', '3'],
                         ['6', '4', '5', '8', '7', '3', '2', '1', '9'],
                         ['3', '8', '9', '2', '6', '1', '7', '4', '5'],
                         ['4', '9', '6', '3', '2', '7', '8', '5', '1'],
                         ['8', '1', '3', '4', '5', '6', '9', '7', '2'],
                         ['2', '5', '7', '1', '9', '8', '4', '3', '6'],
                         ['9', '6', '4', '7', '1', '5', '3', '2', '8'],
                         ['7', '3', '1', '6', '8', '2', '5', '9', '4'],
                         ['5', '2', '8', '9', '3', '4', '1', '6', '7']]
        self.assertEquals(square_result, sudoku_test_solve.solve_sudoku())
 def test_verify_solution_easy_sudoku_empty_values_with_zero(self):
     raw_sudoku  = ("000000680\n" + \
                    "000073009\n" + \
                    "309000045\n" + \
                    "490000000\n" + \
                    "803050902\n" + \
                    "000000036\n" + \
                    "960000308\n" + \
                    "700680000\n" + \
                    "028000000\n")
     sudoku_test_solve = BacktrakingAlgorithm(raw_sudoku, "0")
     square_result = [['1', '7', '2', '5', '4', '9', '6', '8', '3'],
                      ['6', '4', '5', '8', '7', '3', '2', '1', '9'],
                      ['3', '8', '9', '2', '6', '1', '7', '4', '5'],
                      ['4', '9', '6', '3', '2', '7', '8', '5', '1'],
                      ['8', '1', '3', '4', '5', '6', '9', '7', '2'],
                      ['2', '5', '7', '1', '9', '8', '4', '3', '6'],
                      ['9', '6', '4', '7', '1', '5', '3', '2', '8'],
                      ['7', '3', '1', '6', '8', '2', '5', '9', '4'],
                      ['5', '2', '8', '9', '3', '4', '1', '6', '7']]
     self.assertEquals(square_result, sudoku_test_solve.solve_sudoku())
    def test_verify_solution_easy_sudoku_empty_values_with_dot(self):
        raw_sudoku = ("""3.65.84..
52.......
.87....31
..3.1..8.
9..863..5
.5..9.6..
13....25.
.......74
..52.63..""")
        sudoku_test_solve = BacktrakingAlgorithm(raw_sudoku, ".")
        square_result = [['3', '1', '6', '5', '7', '8', '4', '9', '2'],
                         ['5', '2', '9', '1', '3', '4', '7', '6', '8'],
                         ['4', '8', '7', '6', '2', '9', '5', '3', '1'],
                         ['2', '6', '3', '4', '1', '5', '9', '8', '7'],
                         ['9', '7', '4', '8', '6', '3', '1', '2', '5'],
                         ['8', '5', '1', '7', '9', '2', '6', '4', '3'],
                         ['1', '3', '8', '9', '4', '7', '2', '5', '6'],
                         ['6', '9', '2', '3', '5', '1', '8', '7', '4'],
                         ['7', '4', '5', '2', '8', '6', '3', '1', '9']]

        self.assertEquals(square_result, sudoku_test_solve.solve_sudoku())
 def test_verify_solution_easy_sudoku_empty_values_with_dot(self):
     raw_sudoku  = ("3.65.84..\n" + \
                    "52.......\n" + \
                    ".87....31\n" + \
                    "..3.1..8.\n" + \
                    "9..863..5\n" + \
                    ".5..9.6..\n" + \
                    "13....25.\n" + \
                    ".......74\n" + \
                    "..52.63..\n")
     sudoku_test_solve = BacktrakingAlgorithm(raw_sudoku, ".")
     square_result = [['3', '1', '6', '5', '7', '8', '4', '9', '2'],
                      ['5', '2', '9', '1', '3', '4', '7', '6', '8'],
                      ['4', '8', '7', '6', '2', '9', '5', '3', '1'],
                      ['2', '6', '3', '4', '1', '5', '9', '8', '7'],
                      ['9', '7', '4', '8', '6', '3', '1', '2', '5'],
                      ['8', '5', '1', '7', '9', '2', '6', '4', '3'],
                      ['1', '3', '8', '9', '4', '7', '2', '5', '6'],
                      ['6', '9', '2', '3', '5', '1', '8', '7', '4'],
                      ['7', '4', '5', '2', '8', '6', '3', '1', '9']];
       
     self.assertEquals(square_result, sudoku_test_solve.solve_sudoku()) 
 def test_generate_sudoku_pattern_by_complexity_returns_solvable_sudoku_hard(self):
     self.test_generator.generate_sudoku_pattern_by_complexity(40, 50, '.')
     raw_sudoku_string = self.test_generator.get_board_format_to_string(self.test_generator.sudoku_pattern)
     sudoku_test_solve = BacktrakingAlgorithm(raw_sudoku_string, ".")
     self.assertTrue(sudoku_test_solve.solve_sudoku())