def cli(self): ''' Método que inicia a visão CLI. Cria uma instância da classe Cli enviando a lista de BDs encontrados no diretório. O usuário escolhe um BD e uma temporada para iniciar o programa. Em seguida inicia-se um laço que recebe instruções do usuário e executa ações no BD modelado pelo script banco.py ''' def escolha_tabela(): ''' Função invocada para que se defina uma temporada. Caso haja mais de uma, a visão mostra ao usuário opções de escolha; Caso haja apenas uma, esta temporada é escolhida; Caso não haja nenhuma, é criada uma temporada com numeração do ano atual. ''' tabelas = bd.verifica_tabelas() tabelas = [x[0] for x in tabelas] if len(tabelas) > 1: temporada = self.visao.escolhe_temporada(tabelas).replace( "temporada_", "") elif len(tabelas) == 1: temporada = tabelas[0].replace("temporada_", "") else: temporada = datetime.now().year return temporada self.visao = Cli(self.bancos) nome_bd, temporada = self.visao.escolhe_banco() bd = BD(self.diretorio + nome_bd) if temporada == 0: temporada = escolha_tabela() bd.define_tabela(temporada) while True: escolha_menu, parametro = self.visao.menu(nome_bd, bd.tabela) if "Sair" in escolha_menu: bd.encerra() quit() elif "Consultar outras estatísticas" in escolha_menu: estats_1, estats_2, colunas_1, colunas_2 = bd.printa_tabela_2() self.visao.consultar_tabela(estats_1, colunas_1) self.visao.consultar_tabela(estats_2, colunas_2) elif "Alterar BD" in escolha_menu: self.busca_bds() self.bancos.remove(nome_bd) if len(self.bancos) < 1: escolha = self.visao.opcoes_BD("abortar", escolha_menu) else: escolha = self.visao.opcoes_BD(self.bancos, escolha_menu) if "Sair" not in escolha: bd.encerra() bd = BD(self.diretorio + escolha) nome_bd = escolha temporada = escolha_tabela() bd.define_tabela(temporada) elif "Deletar BD" in escolha_menu: self.busca_bds() self.bancos.remove(nome_bd) if len(self.bancos) < 1: escolha = self.visao.opcoes_BD("abortar", escolha_menu) else: escolha = self.visao.opcoes_BD(self.bancos, escolha_menu) if "Sair" not in escolha: if os.path.isfile(self.diretorio + escolha): os.remove(self.diretorio + escolha) elif "Deletar temporada" in escolha_menu: escolha = self.visao.deletar_temporada(bd.verifica_tabelas(), parametro) if "Sair" not in escolha: bd.deleta_tabela(escolha) elif "Alterar/Criar temporada" in escolha_menu: escolha, temporada = self.visao.alterar_temporada( bd.verifica_tabelas(), bd.tabela) if "Criar nova temporada" in escolha: bd.tabela = f"temporada_{temporada}" bd.cria_tabela() elif "temporada_" in escolha: bd.tabela = escolha elif "Consultar estatísticas" in escolha_menu: dados = bd.printa_tabela() self.visao.consultar_tabela(dados[0], dados[1]) elif "Adicionar um jogo" in escolha_menu: itens_serie = bd.retorna_tabela("inteira") if len(itens_serie) > 0: ultima_linha = bd.retorna_tabela("última linha")[0][2:] placar_min, placar_max, quebra_min, quebra_max = ultima_linha tipo = "normal" if parametro < placar_min: tipo = "novo mínimo" quebra_min += 1 print( "Um novo placar mínimo foi registrado na temporada!" ) elif parametro > placar_max: tipo = "novo máximo" quebra_max += 1 print( "Um novo placar máximo foi registrado na temporada!" ) bd.adiciona_placar([ parametro, placar_min, placar_max, quebra_min, quebra_max ], tipo) else: bd.adiciona_placar(parametro, "primeiro jogo")
def test_10_top_5_print(self): ''' 11 - Teste dos melhores e dos piores top 5. Ao popular uma temporada com sete jogos, espera-se que os melhores e os piores top 5 sejam iguais às variáveis "valor_top_5" e "valor_piores_top_5". Em seguida, verifica se as somas de ambos valores são iguais às variáveis "valor_soma_top_5" e "valor_soma_piores_top_5". Testa os métodos "top_5" e "top_5_piores" com os dois blocos condicionais de cada um. Também é testado o método "printa_tabela_2", cujos dois primeiros valores retornados devem ser iguais às variáveis "valor_estats_1" e "valor_estats_2", respectivamente. ''' bd = BD(CAMINHO) bd.define_tabela("404") bd.adiciona_placar(5, "primeiro jogo") tmp = [ [12, "novo máximo"], [7, "normal"], [16, "novo máximo"], [4, "novo mínimo"], [16, "normal"], [8, "normal"], ] for x in tmp: min_temp, max_temp, quebra_min, quebra_max = bd.retorna_tabela( "última linha")[0][2:] placar = x[0] if placar < min_temp: quebra_min += 1 elif placar > max_temp: quebra_max += 1 bd.adiciona_placar( [placar, min_temp, max_temp, quebra_min, quebra_max], x[1]) valor_top_5 = [16, 16, 12, 8, 7] valor_piores_top_5 = [4, 5, 7, 8, 12] self.assertEqual(bd.top_5("lista"), valor_top_5) self.assertEqual(bd.top_5_piores("lista"), valor_piores_top_5) valor_soma_top_5 = sum(valor_top_5) valor_soma_piores_top_5 = sum(valor_piores_top_5) self.assertEqual(bd.top_5("soma"), valor_soma_top_5) self.assertEqual(bd.top_5_piores("soma"), valor_soma_piores_top_5) valor_estats_1 = [[ bd.soma_placares(), bd.media_placares(), valor_soma_top_5, valor_soma_piores_top_5, ]] valor_estats_2 = [[valor_top_5[x], valor_piores_top_5[x]] for x in range(len(valor_top_5))] resultado = bd.printa_tabela_2() self.assertEqual(resultado[0], valor_estats_1) self.assertEqual(resultado[1], valor_estats_2) bd.encerra() self.deleta_BD()