Example #1
0
    def test_movimentacao_possivel(self):
        jogo.tabuleiro.configurar_tabuleiro(4)
        BD.limpar_tabuleiro(conexao_bd)

        jogo.tabuleiro.adicionar_peoes(conexao_bd, [1, 2, 3, 4])
        jogo.tabuleiro.adicionar_peoes(conexao_bd, [5, 6, 7, 8],
                                       [1005, 1004, 0, 0])
        self.assertEqual(
            jogo.tabuleiro.movimentacao_possivel(conexao_bd, 1, 3), 1,
            'tentando mover inicio')
        self.assertEqual(
            jogo.tabuleiro.movimentacao_possivel(conexao_bd, 2, 3), 1,
            'tentando mover inicio')
        self.assertEqual(
            jogo.tabuleiro.movimentacao_possivel(conexao_bd, 5, 3), 2,
            'tentando mover finalizado')
        self.assertEqual(
            jogo.tabuleiro.movimentacao_possivel(conexao_bd, 7, 6), 0,
            'tentando mover inicio com 6')
        self.assertEqual(
            jogo.tabuleiro.movimentacao_possivel(conexao_bd, 6, 1), 0,
            'tentando mover pra casa final')
        self.assertEqual(
            jogo.tabuleiro.movimentacao_possivel(conexao_bd, 123, 123), -1,
            'mover peao inexistente')
Example #2
0
    def test_adicionar_peoes(self):
        # 0 -> sucesso
        # 1 -> id_repetido
        # 2 -> lista invalida
        # 3 -> limite maximo atingido
        jogo.tabuleiro.configurar_tabuleiro(4)
        BD.limpar_tabuleiro(conexao_bd)

        lista1 = [0, 1, 2, 3]
        lista2 = [5, 6, 7, 8]
        lista3 = [9, 10, 11]
        lista4 = [100, 200, 300, 400]
        x = jogo.tabuleiro.adicionar_peoes(conexao_bd, lista1)
        self.assertEqual(x, 0, 'Adicionado peoes simples.')
        x = jogo.tabuleiro.adicionar_peoes(conexao_bd, lista1)
        self.assertEqual(x, 1, 'adicionando novamente os peoes.')
        x = jogo.tabuleiro.adicionar_peoes(conexao_bd, lista2)
        self.assertEqual(x, 0, 'adicionando outros peoes')
        x = jogo.tabuleiro.adicionar_peoes(conexao_bd, lista3, lista1)
        self.assertEqual(x, 2, 'adicionando com posicao invalida')
        x = jogo.tabuleiro.adicionar_peoes(conexao_bd, [90, 100, 110, 120],
                                           lista4)
        self.assertEqual(x, 0, 'adicionando com posicao certa')
        jogo.tabuleiro.adicionar_peoes(conexao_bd, [34, 35, 36, 37])
        x = jogo.tabuleiro.adicionar_peoes(conexao_bd, [111, 222, 333, 444])
        self.assertEqual(x, 3, 'adicionando com limite maximo atingido')
Example #3
0
 def test_salvar_partida_completa(self):
     BD.limpar_tabuleiro(conexao_bd)
     BD.limpar_peao(conexao_bd)
     BD.adicionar_peao(conexao_bd, 0, 'azul')
     BD.adicionar_tabuleiro(conexao_bd, 0, 1, 2, True, False)
     dados = {'bom': 'dia'}
     x = AD.salvar_partida_completa(conexao_bd, dados)
     self.assertEqual(x, 0, 'salvando partida')
Example #4
0
 def test_acessar_posicao(self):
     jogo.tabuleiro.configurar_tabuleiro(4)
     BD.limpar_tabuleiro(conexao_bd)
     jogo.tabuleiro.adicionar_peoes(conexao_bd, [1, 2, 3, 4], [5, 6, 7, 7])
     self.assertIn(1, jogo.tabuleiro.acessar_posicao(conexao_bd, 5),
                   'acessando posicao')
     self.assertIn(2, jogo.tabuleiro.acessar_posicao(conexao_bd, 6),
                   'acessando posicao')
     self.assertIn(3, jogo.tabuleiro.acessar_posicao(conexao_bd, 7),
                   'acessando posicao')
     self.assertIn(4, jogo.tabuleiro.acessar_posicao(conexao_bd, 7),
                   'acessando posicao')
     self.assertEqual(jogo.tabuleiro.acessar_posicao(conexao_bd, 0), 0)
Example #5
0
 def test_modificar_tabuleiro(self):
     BD.limpar_tabuleiro(conexao_bd)
     BD.adicionar_tabuleiro(conexao_bd, 2, 0, 0, True, False)
     x = BD.modificar_tabuleiro(conexao_bd, 2, 10, 20, False, False)
     self.assertEqual(x, 0, 'modificando tabuleiro')
     x = BD.selecionar_tabuleiro(conexao_bd, peao=2)
     r = {
         'id': 2,
         'pos': 10,
         'pos_inicial': 20,
         'eh_inicio': False,
         'eh_finalizado': False
     }
     self.assertDictEqual(r, x, 'modificando tabuleiro 2')
Example #6
0
 def test_selecionar_tabuleiro(self):
     BD.limpar_tabuleiro(conexao_bd)
     BD.adicionar_tabuleiro(conexao_bd, 1, 2, 3, False, True)
     x = BD.selecionar_tabuleiro(conexao_bd, peao=1)
     r = {
         'id': 1,
         'pos': 2,
         'pos_inicial': 3,
         'eh_inicio': False,
         'eh_finalizado': True
     }
     self.assertDictEqual(r, x, 'selecionando tabuleiro')
     x = BD.selecionar_tabuleiro(conexao_bd, pos=2)
     self.assertDictEqual(x[0], r, 'selecionando tabuleiro 2')
Example #7
0
 def test_reiniciar_peao(self):
     jogo.tabuleiro.configurar_tabuleiro(4)
     BD.limpar_tabuleiro(conexao_bd)
     jogo.tabuleiro.adicionar_peoes(conexao_bd, [1, 2, 3, 4], [1, 2, 3, 4])
     self.assertEqual(0, jogo.tabuleiro.reiniciar_peao(conexao_bd, 1),
                      'reiniciando peao')
     self.assertEqual(-1, jogo.tabuleiro.reiniciar_peao(conexao_bd, 6),
                      'reiniciando peao nao existente')
     self.assertEqual(
         jogo.tabuleiro.movimentacao_possivel(conexao_bd, 1, 4), 1,
         'tentando mover peao reiniciado')
     self.assertEqual(
         jogo.tabuleiro.movimentacao_possivel(conexao_bd, 2, 3), 0,
         'mover peao nao reiniciado')
Example #8
0
 def test_mover_peao(self):
     jogo.tabuleiro.configurar_tabuleiro(4)
     BD.limpar_tabuleiro(conexao_bd)
     jogo.tabuleiro.adicionar_peoes(conexao_bd, [1, 2, 3, 4])
     jogo.tabuleiro.adicionar_peoes(conexao_bd, [5, 6, 7, 8],
                                    [13, 10, 2000, 2004])
     self.assertEqual(jogo.tabuleiro.mover_peao(conexao_bd, 1, 6), 0,
                      'movendo peao pra casa 0')
     self.assertEqual(jogo.tabuleiro.mover_peao(conexao_bd, 2, 6), 0,
                      'tirando outro peao do inicio')
     self.assertEqual(jogo.tabuleiro.mover_peao(conexao_bd, 5, 3), 13 + 3,
                      'movendo um peao normalmente')
     self.assertTrue(
         jogo.tabuleiro.mover_peao(conexao_bd, 6, 6) > 2000,
         'movendo pra reta final')
     self.assertEqual(jogo.tabuleiro.mover_peao(conexao_bd, 7, 3), 2003,
                      'movendo dentro da casa final')
     self.assertEqual(jogo.tabuleiro.mover_peao(conexao_bd, 8, 1), -2,
                      'finalizando um peao')
     self.assertEqual(jogo.tabuleiro.mover_peao(conexao_bd, 123, 123), -1,
                      'movendo um inexistente')
def recupera_partida_completa(c):
    """
    Recupera a partida salva e joga no BD.
    Recupera também os dados extras e retorna o dicionario como fornecido para salvar
    Retorna None se nao tiver nenhuma partida salva.
    """

    nome_arquivo = PATH + ARQUIVO_PARTIDA
    try:
        with open(nome_arquivo, 'r') as f:
            tree = ET.parse(f)
            jogo = tree.getroot()

    except FileNotFoundError:
        return None

    lista_peoes = []
    lista_tabuleiro = []

    # LENDO AS peoes
    peoes = jogo.find('peoes')
    for peao in peoes.findall('peao'):
        d = dict()
        for atr in peao:
            # print(atr.tag, atr.attrib['tipo'], atr.text)
            # tag = nome do atributo
            # text = conteudo do atributo
            # attrib['tipo'] = tipo do atributo para converter
            d[atr.tag] = _converte_objeto(atr.text, atr.attrib['tipo'])
        lista_peoes.append(d)

    # ESCREVENDO NA BASE DE DADOS
    baseDados.limpar_peao(c)
    for peao in lista_peoes:
        baseDados.adicionar_peao(c, peao['id'], peao['cor'])

    # LENDO OS TABULEIROS
    baseDados.limpar_tabuleiro(c)
    tabuleiros = jogo.find('tabuleiros')
    for tabuleiro in tabuleiros.findall('tabuleiro'):
        d = dict()
        for atr in tabuleiro:
            # print(atr.tag, atr.attrib['tipo'], atr.text)
            # tag = nome do atributo
            # text = conteudo do atributo
            # attrib['tipo'] = tipo do atributo para converter
            d[atr.tag] = _converte_objeto(atr.text, atr.attrib['tipo'])
        lista_tabuleiro.append(d)

    # ESCREVENDO NA BASE DE DADOS
    for tab in lista_tabuleiro:
        # pode ser otimizada a usar executemany do SQL
        baseDados.adicionar_tabuleiro(c, tab['id'], tab['pos'],
                                      tab['pos_inicial'], tab['eh_inicio'],
                                      tab['eh_finalizado'])

    # RECUPERANDO OS DADOS
    dados = jogo.find('dados')
    if dados is None:
        return {}

    # todos os dados sao filhos de "dados"

    dicionario_dados = dict()
    for dado in dados:
        # print(dado.tag, dado.attrib['tipo'], dado.text)
        if dado.attrib['tipo'] == 'list':
            if dado.text is None:
                dicionario_dados[dado.tag] = []
            else:
                dicionario_dados[dado.tag] = [
                    _converte_objeto(x, dado.attrib['subtipo'])
                    for x in dado.text.split(",")
                ]
        else:
            dicionario_dados[dado.tag] = _converte_objeto(
                dado.text, dado.attrib['tipo'])

    return dicionario_dados
Example #10
0
def limpar_tabuleiro(c):
    # tabela_peoes.clear()
    baseDados.limpar_tabuleiro(c)
    return 0
Example #11
0
 def test_adicionar_tabuleiro(self):
     BD.limpar_tabuleiro(conexao_bd)
     x = BD.adicionar_tabuleiro(conexao_bd, 0, 1, 2, True, False)
     self.assertEqual(0, x, 'adicionando tabuleiro')
     x = BD.adicionar_tabuleiro(conexao_bd, 0, 101, 202, False, True)
     self.assertEqual(-1, x, 'adicionando tabuleiro 2')
Example #12
0
 def test_limpando_tabuleiro(self):
     BD.adicionar_tabuleiro(conexao_bd, 99, 0, 0, False, False)
     x = BD.limpar_tabuleiro(conexao_bd)
     self.assertEqual(0, x, 'limpando tabuleiro')
     x = BD.selecionar_tabuleiro(conexao_bd, 99)
     self.assertEqual(-1, x, 'limpando tabuleiro 2')