コード例 #1
0
        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}.");
                }
            });
        }
コード例 #2
0
        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}.");
                }
            });
        }
コード例 #3
0
        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}\".");
        }
コード例 #4
0
        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}.");
        }