public void CopaMundoTests_Dado_Que_A_Quantidade_De_Filmes_Selecionados_Difere_De_Oito_Quando_Jogar_Lanca_Excecao(int quantidadeFilmes) { var copaMundo = new CopaMundo(); _ = Assert.ThrowsException <InvalidOperationException>(() => { try { for (var i = 1; i <= quantidadeFilmes; i++) { copaMundo.Adicionar(filme: new FilmeTestBuilder().Build()); } copaMundo.Jogar(); } catch (InvalidOperationException excecao) { if (excecao.Message == "Operação inválida. É necessário adicionar 8 filmes para jogar a copa do mundo.") { throw; } Assert.Fail($"A exceção esperada {nameof(InvalidOperationException)} foi lançada mas com uma mensagem inesperada. A mensagem da exceção foi {excecao.Message}"); } catch (Exception excecao) { Assert.Fail($"A exceção esperada não foi lançada. O tipo da exceção esperada é {nameof(InvalidOperationException)} mas foi {excecao.GetType().FullName}."); } }); }
public void CopaMundoTests_Dado_Quantidade_Maxima_De_Filmes_Atingida_Quando_Adicionar_Proximo_Filme_Lanca_Excecao(int quantidadeFilmes) { var copaMundo = new CopaMundo(); _ = Assert.ThrowsException <InvalidOperationException>(() => { try { for (var i = 1; i <= quantidadeFilmes; i++) { copaMundo.Adicionar(filme: new FilmeTestBuilder().Build()); } } catch (InvalidOperationException excecao) { if (excecao.Message == $"Operação inválida. Somente é possível adicionar até 8 filmes para etapa de seleção da copa do mundo.") { throw; } Assert.Fail($"A exceção esperada {nameof(InvalidOperationException)} foi lançada mas com uma mensagem inesperada. A mensagem da exceção foi {excecao.Message}"); } catch (Exception excecao) { Assert.Fail($"A exceção esperada não foi lançada. O tipo da exceção esperada é {nameof(InvalidOperationException)} mas foi {excecao.GetType().FullName}."); } }); }
public void CopaMundoTests_Dado_Que_Nao_Foi_Jogada_A_Copa_Quando_Consultar_Pelo_Vice_Campeao_Lanca_Excecao() { var copaMundo = new CopaMundo(); _ = Assert.ThrowsException <InvalidOperationException>(() => { try { _ = copaMundo.ViceCampeao; } catch (InvalidOperationException excecao) { if (excecao.Message == $"Operação inválida. O vice-campeão somente estará disponível quando a copa do mundo for jogada.") { throw; } Assert.Fail($"A exceção esperada {nameof(InvalidOperationException)} foi lançada mas com uma mensagem inesperada. A mensagem da exceção foi {excecao.Message}"); } catch (Exception excecao) { Assert.Fail($"A exceção esperada não foi lançada. O tipo da exceção esperada é {nameof(InvalidOperationException)} mas foi {excecao.GetType().FullName}."); } }); }
public void CopaMundoTests_Dado_Filmes_Selecionados_Quando_Jogar_A_Copa_Define_O_Campeao_E_Vice(int cenario, int posicaoCampeao, int posicaoViceCampeao) { var copaMundo = new CopaMundo(); var filmes = cenario switch { 1 => ObterFilmesParaPrimeiroCenarioTestes(), 2 => ObterFilmesParaSegundoCenarioTestes(), 3 => ObterFilmesParaTerceiroCenarioTestes(), 4 => ObterFilmesParaQuartoCenarioTestes(), 5 => ObterFilmesParaQuintoCenarioTestes(), 6 => ObterFilmesParaSextoCenarioTestes(), _ => null, }; foreach (var filme in filmes) { copaMundo.Adicionar(filme); } copaMundo.Jogar(); Assert.AreEqual(expected: filmes[posicaoCampeao], actual: copaMundo.Campeao, $"Para cenário de teste {cenario} o campeão esperado é {filmes[posicaoCampeao].Titulo} e o campeão da copa do mundo foi {copaMundo.Campeao.Titulo}."); Assert.AreEqual(expected: filmes[posicaoViceCampeao], actual: copaMundo.ViceCampeao, $"Para cenário de teste {cenario} o vice-campeão esperado é {filmes[posicaoViceCampeao].Titulo} e o vice-campeão da copa do mundo foi {copaMundo.ViceCampeao.Titulo}."); }
public void EliminatoriasTests_Dado_Eliminatorias_Sem_Jogar_Quando_Consultar_Pelo_Campeao_Lanca_Excecao() { var copaMundo = new CopaMundo(); var eliminatorias = new Eliminatorias(copaMundo); _ = Assert.ThrowsException <InvalidOperationException>(() => { try { _ = eliminatorias.Campeao; } catch (InvalidOperationException excecao) { if (excecao.Message == "Operação inválida. O campeão somente estará disponível quando as eliminatórias forem jogadas.") { throw; } Assert.Fail($"A exceção esperada {nameof(InvalidOperationException)} foi lançada mas com uma mensagem inesperada. A mensagem da exceção foi {excecao.Message}"); } catch (Exception excecao) { Assert.Fail($"A exceção esperada não foi lançada. O tipo da exceção esperada é {nameof(InvalidOperationException)} mas foi {excecao.GetType().FullName}."); } }); }
public void EliminatoriasTests_Dado_Filmes_Selecionados_Sem_Montar_Chaveamento_Quando_Jogar_As_Eliminatorias_Lanca_Excecao() { var copaMundo = new CopaMundo(); var eliminatorias = new Eliminatorias(copaMundo); _ = Assert.ThrowsException <InvalidOperationException>(() => { try { eliminatorias.Jogar(); } catch (InvalidOperationException excecao) { if (excecao.Message == "Operação inválida. É necessário primeiro montar o chaveamento para, somente então, realizar as partidas das eliminatórias.") { throw; } Assert.Fail($"A exceção esperada {nameof(InvalidOperationException)} foi lançada mas com uma mensagem inesperada. A mensagem da exceção foi {excecao.Message}"); } catch (Exception excecao) { Assert.Fail($"A exceção esperada não foi lançada. O tipo da exceção esperada é {nameof(InvalidOperationException)} mas foi {excecao.GetType().FullName}."); } }); }
public void EliminatoriasTests_Dado_Filmes_Selecionados_Apos_Montar_Chaveamento_Quando_Jogar_As_Eliminatorias_Define_Campeao_E_Vice(int cenario, int posicaoCampeao, int posicaoViceCampeao) { var copaMundo = new CopaMundo(); var eliminatorias = new EliminatoriasFake(copaMundo); var filmes = cenario switch { 1 => ObterFilmesParaPrimeiroCenarioTestes(), 2 => ObterFilmesParaSegundoCenarioTestes(), 3 => ObterFilmesParaTerceiroCenarioTestes(), 4 => ObterFilmesParaQuartoCenarioTestes(), 5 => ObterFilmesParaQuintoCenarioTestes(), 6 => ObterFilmesParaSextoCenarioTestes(), _ => null, }; foreach (var filme in filmes) { copaMundo.Adicionar(filme); } eliminatorias.Jogar(); Assert.AreEqual(expected: filmes[posicaoCampeao], actual: eliminatorias.Campeao, $"Para cenário de teste {cenario} o campeão esperado é {filmes[posicaoCampeao].Titulo} e o campeão das eliminatórias foi {eliminatorias.Campeao.Titulo}."); Assert.AreEqual(expected: filmes[posicaoViceCampeao], actual: eliminatorias.ViceCampeao, $"Para cenário de teste {cenario} o vice-campeão esperado é {filmes[posicaoViceCampeao].Titulo} e o vice-campeão das eliminatórias foi {eliminatorias.ViceCampeao.Titulo}."); }
internal EliminatoriasFake(CopaMundo copaMundo) : base(copaMundo) { _montouChaveamento = true; }
internal PartidaTestBuilder() { _filmes = new List <Filme>(); _copaMundo = new CopaMundo(); _eliminatorias = new Eliminatorias(_copaMundo); }