public void AoChegarNaFinalDeveRetornarEleMesmo()
        {
            //ARRANGE
            var chaveamento = new ChaveamentoPartidas
            {
                new Partida(OsIncriveis2, JurassicWorld)
            };
            var mockRegraVencedor = new Mock <IRegraVencedor>();

            mockRegraVencedor.Setup(r => r.Ranquear(It.IsAny <Partida>()))
            .Returns(new[] { OsIncriveis2, OitoMulheresEUmSegredo });
            var torneio = new TorneioMataMata(mockRegraVencedor.Object);

            //ACT
            var chaveamentoFinal = torneio.DisputarPartidas(chaveamento);

            //ASSERT
            Assert.Same(chaveamento, chaveamentoFinal);
        }
        public void AoDisputarAsPartidasDoTorneioDeveIrEliminandoAteChegarAFinal()
        {
            //ARRANGE
            var chaveamento = new ChaveamentoPartidas
            {
                new Partida(OsIncriveis2, JurassicWorld),
                new Partida(OitoMulheresEUmSegredo, Hereditario),
                new Partida(Vingadores, Deadpool2),
                new Partida(HanSolo, Thor)
            };
            var mockRegraVencedor = new Mock <IRegraVencedor>();

            mockRegraVencedor.Setup(r => r.Ranquear(It.IsAny <Partida>()))
            .Returns(new[] { OsIncriveis2, OitoMulheresEUmSegredo });
            var torneio = new TorneioMataMata(mockRegraVencedor.Object);

            //ACT
            var chaveamentoFinal = torneio.DisputarPartidas(chaveamento);

            //ASSERT
            Assert.Single(chaveamentoFinal);
            Assert.Equal(2, chaveamentoFinal.ChaveamentoAnterior.Count);
            Assert.Equal(4, chaveamentoFinal.ChaveamentoAnterior.ChaveamentoAnterior.Count);
        }