def test_x_wins(self):
        h = solution.TicTacToeBoard()
        h["A1"] = 'X'
        h["A2"] = 'O'
        h["B1"] = 'X'
        h["A3"] = 'O'
        h["C1"] = 'X'

        self.assertEqual('X wins!', h.game_status())
    def test_o_wins(self):
        # Vertical win
        v = solution.TicTacToeBoard()
        v["A1"] = 'O'
        v["B2"] = 'X'
        v["A2"] = 'O'
        v["B3"] = 'X'
        v["A3"] = 'O'

        self.assertEqual('O wins!', v.game_status())
    def test_empty(self):
        b = solution.TicTacToeBoard()
        empty_board = '\n  -------------\n' +\
            '3 |   |   |   |\n' +\
            '  -------------\n' +\
            '2 |   |   |   |\n' +\
            '  -------------\n' +\
            '1 |   |   |   |\n' +\
            '  -------------\n' +\
            '    A   B   C  \n'

        self.assertEqual(empty_board, b.__str__())
    def test_draw(self):
        d = solution.TicTacToeBoard()
        d["A1"] = 'O'
        d["B1"] = 'X'
        d["A3"] = 'O'
        d["A2"] = 'X'
        d["C2"] = 'O'
        d["C3"] = 'X'
        d["B3"] = 'O'
        d["B2"] = 'X'
        d["C1"] = 'O'

        self.assertEqual('Draw!', d.game_status())
    def test_full(self):
        d = solution.TicTacToeBoard()
        full_board = '\n  -------------\n' +\
            '3 | O | O | X |\n' +\
            '  -------------\n' +\
            '2 | X | X | O |\n' +\
            '  -------------\n' +\
            '1 | O | X | O |\n' +\
            '  -------------\n' +\
            '    A   B   C  \n'

        d["A1"] = 'O'
        d["B1"] = 'X'
        d["A3"] = 'O'
        d["A2"] = 'X'
        d["C2"] = 'O'
        d["C3"] = 'X'
        d["B3"] = 'O'
        d["B2"] = 'X'
        d["C1"] = 'O'

        self.assertEqual(full_board, d.__str__())
    def test_game_in_progress(self):
        p = solution.TicTacToeBoard()
        p["A1"] = 'X'
        p["A3"] = 'O'

        self.assertEqual('Game in progress.', p.game_status())
 def test_input_format(self):
     o = solution.TicTacToeBoard()
     with self.assertRaises(solution.InvalidKey):
         o['Magadan'] = 'X'