Beispiel #1
0
        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}.");
                }
            });
        }
Beispiel #2
0
        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}.");
                }
            });
        }
Beispiel #3
0
        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}.");
                }
            });
        }
Beispiel #4
0
        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}.");
        }
Beispiel #5
0
        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}.");
                }
            });
        }
Beispiel #6
0
        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}.");
                }
            });
        }
Beispiel #7
0
        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}.");
        }
Beispiel #8
0
 internal EliminatoriasFake(CopaMundo copaMundo) : base(copaMundo)
 {
     _montouChaveamento = true;
 }
 internal PartidaTestBuilder()
 {
     _filmes        = new List <Filme>();
     _copaMundo     = new CopaMundo();
     _eliminatorias = new Eliminatorias(_copaMundo);
 }