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')
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')
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')
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)
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')
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')
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')
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
def limpar_tabuleiro(c): # tabela_peoes.clear() baseDados.limpar_tabuleiro(c) return 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')
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')