def test_4x4_max_number_for_get_state_number(self):
        env = Environment(4, 4)
        env.board.fill(2)

        state_number = env.get_state_number(env.board)

        self.assertEqual(3 ** 16 - 1, state_number)
    def test_3x3_max_number_for_get_state_number(self):
        env = Environment(3, 3)
        env.board.fill(2)

        state_number = env.get_state_number(env.board)

        self.assertEqual(3 ** 9 - 1, state_number)
    def test_get_state_number(self):
        env = Environment(3, 3)
        env.set_x(0, 0) # 1
        env.set_x(0, 1) # 3
        env.set_x(0, 2) # 9
        env.set_o(1, 1) # 3^4 * 2 = 162
        state_number = env.get_state_number(env.board)

        self.assertEqual(175, state_number)
    def test_get_board_from_state_number_80(self):
        # given
        env = Environment(2, 2)
        state_number = 80

        # when - conversion from state number to board and back to number
        board_from_state = env.get_board_from_state_number(state_number, True)
        state_number_from_board = env.get_state_number(board_from_state)

        # then
        self.assertEqual(state_number_from_board, state_number)