def setUp(self):
     self.letters = "ABCDEFGHI"
     self.numbers = "123456789"
     self.game_grid = "050807020600010090702540006070020301504000908103080070900076205060090003080103040"
     self.game_grid_solved = "359867124648312597712549836876924351524731968193685472931476285465298713287153649"
     self.game_dictionary = {
         "I6": "3",
         "H9": "3",
         "I2": "8",
         "E8": "6",
         "H3": "5",
         "H7": "7",
         "I7": "6",
         "I4": "1",
         "H5": "9",
         "F9": "2",
         "G7": "2",
         "G6": "6",
         "G5": "7",
         "E1": "5",
         "G3": "1",
         "G2": "3",
         "G1": "9",
         "I1": "2",
         "C8": "3",
         "I3": "7",
         "E5": "3",
         "I5": "5",
         "C9": "6",
         "G9": "5",
         "G8": "8",
         "A1": "3",
         "A3": "9",
         "A2": "5",
         "A5": "6",
         "A4": "8",
         "A7": "1",
         "A6": "7",
         "C3": "2",
         "C2": "1",
         "C1": "7",
         "E6": "1",
         "C7": "8",
         "C6": "9",
         "C5": "4",
         "C4": "5",
         "I9": "9",
         "D8": "5",
         "I8": "4",
         "E4": "7",
         "D9": "1",
         "H8": "1",
         "F6": "5",
         "A9": "4",
         "G4": "4",
         "A8": "2",
         "E7": "9",
         "E3": "4",
         "F1": "1",
         "F2": "9",
         "F3": "3",
         "F4": "6",
         "F5": "8",
         "E2": "2",
         "F7": "4",
         "F8": "7",
         "D2": "7",
         "H1": "4",
         "H6": "8",
         "H2": "6",
         "H4": "2",
         "D3": "6",
         "B4": "3",
         "B5": "1",
         "B6": "2",
         "B7": "5",
         "E9": "8",
         "B1": "6",
         "B2": "4",
         "B3": "8",
         "D6": "4",
         "D7": "3",
         "D4": "9",
         "D5": "2",
         "B8": "9",
         "B9": "7",
         "D1": "8",
     }
     self.game_dictionary_solved = {
         "B8": "9",
         "H1": "4",
         "C7": "8",
         "B3": "8",
         "D3": "6",
         "G9": "5",
         "G8": "8",
         "B9": "7",
         "A3": "9",
         "G7": "2",
         "G6": "6",
         "G5": "7",
         "G4": "4",
         "G3": "1",
         "G2": "3",
         "G1": "9",
         "B5": "1",
         "I1": "2",
         "I3": "7",
         "I2": "8",
         "I5": "5",
         "I4": "1",
         "I7": "6",
         "I6": "3",
         "A1": "3",
         "C9": "6",
         "C8": "3",
         "A5": "6",
         "E8": "6",
         "A7": "1",
         "A6": "7",
         "E5": "3",
         "C2": "1",
         "C1": "7",
         "E6": "1",
         "E1": "5",
         "A2": "5",
         "C5": "4",
         "A4": "8",
         "I9": "9",
         "B2": "4",
         "I8": "4",
         "H2": "6",
         "D9": "1",
         "F2": "9",
         "D5": "2",
         "C3": "2",
         "A9": "4",
         "C6": "9",
         "E4": "7",
         "B1": "6",
         "E7": "9",
         "F1": "1",
         "H8": "1",
         "H9": "3",
         "F4": "6",
         "F5": "8",
         "F6": "5",
         "F7": "4",
         "F8": "7",
         "H3": "5",
         "F3": "3",
         "H6": "8",
         "H7": "7",
         "H4": "2",
         "H5": "9",
         "B4": "3",
         "A8": "2",
         "B6": "2",
         "B7": "5",
         "E9": "8",
         "E3": "4",
         "D8": "5",
         "F9": "2",
         "D6": "4",
         "D7": "3",
         "D4": "9",
         "C4": "5",
         "D2": "7",
         "E2": "2",
         "D1": "8",
     }
     self.new_instance = PeterAlgorithm()
class TestPeterAlgorithm(unittest.TestCase):
    def setUp(self):
        self.letters = "ABCDEFGHI"
        self.numbers = "123456789"
        self.game_grid = "050807020600010090702540006070020301504000908103080070900076205060090003080103040"
        self.game_grid_solved = "359867124648312597712549836876924351524731968193685472931476285465298713287153649"
        self.game_dictionary = {
            "I6": "3",
            "H9": "3",
            "I2": "8",
            "E8": "6",
            "H3": "5",
            "H7": "7",
            "I7": "6",
            "I4": "1",
            "H5": "9",
            "F9": "2",
            "G7": "2",
            "G6": "6",
            "G5": "7",
            "E1": "5",
            "G3": "1",
            "G2": "3",
            "G1": "9",
            "I1": "2",
            "C8": "3",
            "I3": "7",
            "E5": "3",
            "I5": "5",
            "C9": "6",
            "G9": "5",
            "G8": "8",
            "A1": "3",
            "A3": "9",
            "A2": "5",
            "A5": "6",
            "A4": "8",
            "A7": "1",
            "A6": "7",
            "C3": "2",
            "C2": "1",
            "C1": "7",
            "E6": "1",
            "C7": "8",
            "C6": "9",
            "C5": "4",
            "C4": "5",
            "I9": "9",
            "D8": "5",
            "I8": "4",
            "E4": "7",
            "D9": "1",
            "H8": "1",
            "F6": "5",
            "A9": "4",
            "G4": "4",
            "A8": "2",
            "E7": "9",
            "E3": "4",
            "F1": "1",
            "F2": "9",
            "F3": "3",
            "F4": "6",
            "F5": "8",
            "E2": "2",
            "F7": "4",
            "F8": "7",
            "D2": "7",
            "H1": "4",
            "H6": "8",
            "H2": "6",
            "H4": "2",
            "D3": "6",
            "B4": "3",
            "B5": "1",
            "B6": "2",
            "B7": "5",
            "E9": "8",
            "B1": "6",
            "B2": "4",
            "B3": "8",
            "D6": "4",
            "D7": "3",
            "D4": "9",
            "D5": "2",
            "B8": "9",
            "B9": "7",
            "D1": "8",
        }
        self.game_dictionary_solved = {
            "B8": "9",
            "H1": "4",
            "C7": "8",
            "B3": "8",
            "D3": "6",
            "G9": "5",
            "G8": "8",
            "B9": "7",
            "A3": "9",
            "G7": "2",
            "G6": "6",
            "G5": "7",
            "G4": "4",
            "G3": "1",
            "G2": "3",
            "G1": "9",
            "B5": "1",
            "I1": "2",
            "I3": "7",
            "I2": "8",
            "I5": "5",
            "I4": "1",
            "I7": "6",
            "I6": "3",
            "A1": "3",
            "C9": "6",
            "C8": "3",
            "A5": "6",
            "E8": "6",
            "A7": "1",
            "A6": "7",
            "E5": "3",
            "C2": "1",
            "C1": "7",
            "E6": "1",
            "E1": "5",
            "A2": "5",
            "C5": "4",
            "A4": "8",
            "I9": "9",
            "B2": "4",
            "I8": "4",
            "H2": "6",
            "D9": "1",
            "F2": "9",
            "D5": "2",
            "C3": "2",
            "A9": "4",
            "C6": "9",
            "E4": "7",
            "B1": "6",
            "E7": "9",
            "F1": "1",
            "H8": "1",
            "H9": "3",
            "F4": "6",
            "F5": "8",
            "F6": "5",
            "F7": "4",
            "F8": "7",
            "H3": "5",
            "F3": "3",
            "H6": "8",
            "H7": "7",
            "H4": "2",
            "H5": "9",
            "B4": "3",
            "A8": "2",
            "B6": "2",
            "B7": "5",
            "E9": "8",
            "E3": "4",
            "D8": "5",
            "F9": "2",
            "D6": "4",
            "D7": "3",
            "D4": "9",
            "C4": "5",
            "D2": "7",
            "E2": "2",
            "D1": "8",
        }
        self.new_instance = PeterAlgorithm()

    def test_verify_that_the_get_dictionary_keys_function_forms_a_square_by_9_x_9_with_digits_and_rows(self):
        quadrate = self.new_instance.get_dictionary_keys(self.letters, self.numbers)
        quadrate_to_compare = [
            "A1",
            "A2",
            "A3",
            "A4",
            "A5",
            "A6",
            "A7",
            "A8",
            "A9",
            "B1",
            "B2",
            "B3",
            "B4",
            "B5",
            "B6",
            "B7",
            "B8",
            "B9",
            "C1",
            "C2",
            "C3",
            "C4",
            "C5",
            "C6",
            "C7",
            "C8",
            "C9",
            "D1",
            "D2",
            "D3",
            "D4",
            "D5",
            "D6",
            "D7",
            "D8",
            "D9",
            "E1",
            "E2",
            "E3",
            "E4",
            "E5",
            "E6",
            "E7",
            "E8",
            "E9",
            "F1",
            "F2",
            "F3",
            "F4",
            "F5",
            "F6",
            "F7",
            "F8",
            "F9",
            "G1",
            "G2",
            "G3",
            "G4",
            "G5",
            "G6",
            "G7",
            "G8",
            "G9",
            "H1",
            "H2",
            "H3",
            "H4",
            "H5",
            "H6",
            "H7",
            "H8",
            "H9",
            "I1",
            "I2",
            "I3",
            "I4",
            "I5",
            "I6",
            "I7",
            "I8",
            "I9",
        ]
        self.assertEqual(quadrate_to_compare, quadrate)

    def test_verify_that_the_game_has_81_values(self):
        assert len(self.new_instance.squares) == 81

    def test_verify_that_the_game_has_27_values_for_unitlist(self):
        assert len(self.new_instance.unitlist) == 27

    def test_verify_that_units_using_squares(self):
        assert all(len(self.new_instance.units[s]) == 3 for s in self.new_instance.squares)

    def test_verify_that_peers_using_squares(self):
        assert all(len(self.new_instance.peers[s]) == 20 for s in self.new_instance.squares)

    def test_verify_that_the_function_get_parse_grid_in_dictionary_converts_a_grid_in_a_dictionary(self):
        var_grid = self.new_instance.get_parse_grid_in_dictionary(self.game_grid)
        var_dicc = self.game_dictionary
        self.assertDictEqual(var_dicc, var_grid)

    def test_verify_that_the_function_get_grid_values_convert_a_solution_in_a_dictionary(self):
        var_grid = self.new_instance.get_grid_values(self.game_grid_solved)
        var_dicc = self.game_dictionary_solved
        self.assertDictEqual(var_dicc, var_grid)

    def test_verify_that_the_function_solve_return_a_solution(self):
        var_grid = self.new_instance.get_grid_values(self.game_grid_solved)
        var_dicc = self.game_dictionary_solved
        self.assertDictEqual(var_dicc, var_grid)

    def test_verify_that_the_function_get_game_solution_convert_the_dictionary_to_string_solution(self):
        var_grid = self.new_instance.get_game_solution(self.game_grid_solved)
        var_grid_solved = self.game_grid_solved
        self.assertEqual(var_grid_solved, var_grid)