public void PartidaTests_Dado_Partida_Sem_Disputa_Quando_Consultar_Pelo_Vencedor_Lanca_Excecao() { var filmeA = new FilmeTestBuilder().ComTitulo("Filme A").ComNota(8.5m).Build(); var filmeB = new FilmeTestBuilder().ComTitulo("Filme B").ComNota(8.5m).Build(); var partida = new PartidaTestBuilder().ComFilme(filmeA).ComFilme(filmeB).Build(); _ = Assert.ThrowsException <InvalidOperationException>(() => { try { _ = partida.Vencedor; } catch (InvalidOperationException excecao) { if (excecao.Message == "Operação inválida. O vencedor somente estará disponível quando a partida 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 PartidaTests_Dado_Nulo_Argumento_Segundo_Participante_Quando_Instanciar_Lanca_Excecao() { var filme = new FilmeTestBuilder().ComTitulo("Filme B").ComNota(8.5m).Build(); var partidaBuilder = new PartidaTestBuilder().ComFilme(filme).ComFilme(null); _ = Assert.ThrowsException <ArgumentNullException>(() => { try { _ = partidaBuilder.Build(); } catch (ArgumentNullException excecao) { if (excecao.ParamName == "segundoFilme") { throw; } Assert.Fail($"A exceção esperada {nameof(ArgumentNullException)} 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(ArgumentNullException)} mas foi {excecao.GetType().FullName}."); } }); }
public void PartidaTests_Dado_Dois_Filmes_Com_Notas_Iguais_Quando_Disputarem_Uma_Partida_Retorna_Como_Vencedor_O_Filme_Em_Primeiro_Na_Ordem_Alfabetica_De_Titulo(string tituloFilmeA, decimal notaFilmeA, string tituloFilmeB, decimal notaFilmeB, int posicaoVencedor, int posicaoDerrotado) { var filmeA = new FilmeTestBuilder().ComTitulo(tituloFilmeA).ComNota(notaFilmeA).Build(); var filmeB = new FilmeTestBuilder().ComTitulo(tituloFilmeB).ComNota(notaFilmeB).Build(); var partida = new PartidaTestBuilder().ComFilme(filmeA).ComFilme(filmeB).Build(); var vencedorEsperado = posicaoVencedor == 1 ? filmeA : filmeB; var derrotadoEsperado = posicaoDerrotado == 1 ? filmeA : filmeB; var nomeVariavelVencedorEsperado = posicaoVencedor == 1 ? nameof(filmeA) : nameof(filmeB); var nomeVariavelDerrotadoEsperado = posicaoDerrotado == 1 ? nameof(filmeA) : nameof(filmeB); partida.Disputar(); Assert.AreEqual(expected: vencedorEsperado, actual: partida.Vencedor, $"O vencedor esperado é a instância de Filme da variável {nomeVariavelVencedorEsperado} porque o titulo do Filme A é \"{tituloFilmeA}\" e o titulo do Filme B é \"{tituloFilmeB}\"."); Assert.AreEqual(expected: derrotadoEsperado, actual: partida.Derrotado, $"O derrotado esperado é a instância de Filme da variável {nomeVariavelDerrotadoEsperado} porque o titulo do Filme A é \"{tituloFilmeA}\" e o titulo do Filme B é \"{tituloFilmeB}\"."); }
public void PartidaTests_Dado_Dois_Filmes_Com_Notas_Diferentes_Quando_Disputarem_Uma_Partida_Retorna_Como_Vencedor_O_Filme_Com_Nota_Maior(decimal notaFilmeA, decimal notaFilmeB, int posicaoVencedor, int posicaoDerrotado) { var filmeA = new FilmeTestBuilder().ComNota(notaFilmeA).Build(); var filmeB = new FilmeTestBuilder().ComNota(notaFilmeB).Build(); var partida = new PartidaTestBuilder().ComFilme(filmeA).ComFilme(filmeB).Build(); var vencedorEsperado = posicaoVencedor == 1 ? filmeA : filmeB; var derrotadoEsperado = posicaoDerrotado == 1 ? filmeA : filmeB; var nomeVariavelVencedorEsperado = posicaoVencedor == 1 ? nameof(filmeA) : nameof(filmeB); var nomeVariavelDerrotadoEsperado = posicaoDerrotado == 1 ? nameof(filmeA) : nameof(filmeB); partida.Disputar(); Assert.AreEqual(expected: vencedorEsperado, actual: partida.Vencedor, $"O vencedor esperado é a instância de Filme da variável {nomeVariavelVencedorEsperado} porque a nota do Filme A é {notaFilmeA} e a nota do Filme B é {notaFilmeB}."); Assert.AreEqual(expected: derrotadoEsperado, actual: partida.Derrotado, $"O derrotado esperado é a instância de Filme da variável {nomeVariavelDerrotadoEsperado} porque a nota do Filme A é {notaFilmeA} e a nota do Filme B é {notaFilmeB}."); }