Exemplo n.º 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}.");
                }
            });
        }
Exemplo n.º 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}.");
                }
            });
        }
Exemplo n.º 3
0
        public void FilmeTests_Dado_Que_Filme_Possui_Nota_Diferente_Em_Relacao_Ao_Filme_Comparado_Quando_Consultar_Se_Possui_Nota_Igual_Retorna_Falso(decimal notaFilmeA, decimal notaFilmeB)
        {
            var filmeA = new FilmeTestBuilder().ComNota(notaFilmeA).Build();
            var filmeB = new FilmeTestBuilder().ComNota(notaFilmeB).Build();

            Assert.IsFalse(filmeA.PossuiNotaIgual(filmeB), $"Filme A possui nota {notaFilmeA} e Filme B possui nota {notaFilmeB}.");
        }
Exemplo n.º 4
0
        public void FilmeTests_Dado_Que_Filme_Possui_Nota_Igual_Em_Relacao_Ao_Filme_Comparado_Quando_Consultar_Se_Possui_Nota_Igual_Retorna_True()
        {
            var filmeA = new FilmeTestBuilder().ComNota(8.5m).Build();
            var filmeB = new FilmeTestBuilder().ComNota(8.5m).Build();

            Assert.IsTrue(filmeA.PossuiNotaIgual(filmeB));
        }
Exemplo n.º 5
0
        public void FilmeTests_Dado_Que_Filme_Possui_Nota_Menor_Em_Relacao_Ao_Filme_Comparado_Quando_Consultar_Se_Possui_Nota_Maior_Retorna_Falso(decimal notaFilmeA, decimal notaFilmeB)
        {
            var filmeA = new FilmeTestBuilder().ComNota(notaFilmeA).Build();
            var filmeB = new FilmeTestBuilder().ComNota(notaFilmeB).Build();

            Assert.IsFalse(filmeB.PossuiNotaMaior(filmeA), $"Filme A possui nota {notaFilmeA} e menor que Filme B possui nota {notaFilmeB}.");
        }
Exemplo n.º 6
0
        public void FilmeTests_Dado_Nulo_Argumento_Outro_Filme_Quando_Consulta_Se_Possui_Nota_Igual_Lanca_Excecao()
        {
            var filme = new FilmeTestBuilder().Build();

            _ = Assert.ThrowsException <ArgumentNullException>(() =>
            {
                try
                {
                    _ = filme.PossuiNotaIgual(null);
                }
                catch (ArgumentNullException excecao)
                {
                    if (excecao.ParamName == "outroFilme")
                    {
                        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}.");
                }
            });
        }
Exemplo n.º 7
0
        public void FilmeTests_Dado_Ordenacao_Ascendente_Que_Filme_Possui_Titulo_Igual_Em_Relacao_Ao_Filme_Comparado_Quando_Sao_Comparados_Retorna_Zero()
        {
            var filme      = new FilmeTestBuilder().ComTitulo("Filme A").Build();
            var outroFilme = new FilmeTestBuilder().ComTitulo("Filme A").Build();

            var resultado = filme.CompareTo(outroFilme);

            Assert.AreEqual(expected: 0, actual: resultado);
        }
Exemplo n.º 8
0
        public void FilmeTests_Dado_Ordenacao_Ascendente_Que_Filme_Possui_Titulo_Que_Sucede_Em_Relacao_Ao_Filme_Comparado_Quando_Sao_Comparados_Retorna_Um(string tituloFilmeA, string tituloFilmeB)
        {
            var filmeA = new FilmeTestBuilder().ComTitulo("Filme A").Build();
            var filmeB = new FilmeTestBuilder().ComTitulo("Filme B").Build();

            var resultado = filmeB.CompareTo(filmeA);

            Assert.AreEqual(expected: 1, resultado, $"Filme A com título {tituloFilmeA} sucede Filme B com título {tituloFilmeB} como objeto comparado na ordenação.");
        }
Exemplo n.º 9
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}\".");
        }
Exemplo n.º 10
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}.");
        }