public void DeveDesempatarEntreDuasQuadras()
        {
            var identificadorDeQuadra = new IdentificaQuatroCartasComValoresIguais();
            var maoA = new List <Carta>
            {
                CartaBuilder.UmaCarta().ComValor(4).ComNaipe(Naipes.Diamonds).Construir(),
                CartaBuilder.UmaCarta().ComValor(4).ComNaipe(Naipes.Spades).Construir(),
                CartaBuilder.UmaCarta().ComValor(4).ComNaipe(Naipes.Hearts).Construir(),
                CartaBuilder.UmaCarta().ComValor(4).ComNaipe(Naipes.Clubs).Construir(),
                CartaBuilder.UmaCarta().ComValor(1).ComNaipe(Naipes.Diamonds).Construir()
            };
            var maoB = new List <Carta>
            {
                CartaBuilder.UmaCarta().ComValor(6).ComNaipe(Naipes.Diamonds).Construir(),
                CartaBuilder.UmaCarta().ComValor(6).ComNaipe(Naipes.Spades).Construir(),
                CartaBuilder.UmaCarta().ComValor(6).ComNaipe(Naipes.Hearts).Construir(),
                CartaBuilder.UmaCarta().ComValor(6).ComNaipe(Naipes.Clubs).Construir(),
                CartaBuilder.UmaCarta().ComValor(3).ComNaipe(Naipes.Diamonds).Construir()
            };
            var maoVencedoraEsperada = maoB.Select(carta => carta).ToList();

            var maoVencedoraEncontrada = new DesempateDeQuadra(identificadorDeQuadra).Desempatar(maoA, maoB);

            Assert.Equal(maoVencedoraEsperada, maoVencedoraEncontrada);
        }
Example #2
0
        public void DeveDesempatarEntreDoisFullHouse()
        {
            var identificadorDeTrinca = new IdentificaTresCartasComValoresIguais();
            var maoA = new List <Carta>
            {
                CartaBuilder.UmaCarta().ComValor(2).ComNaipe(Naipes.Hearts).Construir(),
                CartaBuilder.UmaCarta().ComValor(2).ComNaipe(Naipes.Diamonds).Construir(),
                CartaBuilder.UmaCarta().ComValor(4).ComNaipe(Naipes.Clubs).Construir(),
                CartaBuilder.UmaCarta().ComValor(4).ComNaipe(Naipes.Diamonds).Construir(),
                CartaBuilder.UmaCarta().ComValor(4).ComNaipe(Naipes.Spades).Construir()
            };
            var maoB = new List <Carta>
            {
                CartaBuilder.UmaCarta().ComValor(3).ComNaipe(Naipes.Clubs).Construir(),
                CartaBuilder.UmaCarta().ComValor(3).ComNaipe(Naipes.Diamonds).Construir(),
                CartaBuilder.UmaCarta().ComValor(3).ComNaipe(Naipes.Spades).Construir(),
                CartaBuilder.UmaCarta().ComValor(9).ComNaipe(Naipes.Spades).Construir(),
                CartaBuilder.UmaCarta().ComValor(9).ComNaipe(Naipes.Diamonds).Construir()
            };
            var maoVencedoraEsperada = maoA.Select(carta => carta.HashDaCarta).ToList();

            var maoVencedoraEncontrada = new DesempateDeFullHouse(identificadorDeTrinca)
                                         .Desempatar(maoA, maoB).Select(carta => carta.HashDaCarta).ToList();

            Assert.Equal(maoVencedoraEsperada, maoVencedoraEncontrada);
        }
        public void NaoDeveEncontrarAJogadaNaMaoSeNaoHouverUmPar()
        {
            _maoDe5Cartas[3] = CartaBuilder.UmaCarta().ComValor(8).ComNaipe(Naipes.Diamonds).Construir();

            var jogadaEncontradaNaMao = _umParDeCartas.JogadaEncontradaNaMao(_maoDe5Cartas);

            Assert.False(jogadaEncontradaNaMao);
        }
        public void NaoDeveEncontrarVencedorQuandoOsFlushsSaoIguais()
        {
            _maoB[4] = CartaBuilder.UmaCarta().ComValor(10).ComNaipe(Naipes.Diamonds).Construir();

            var jogadaEncontrada = new DesempateDeFlush(_identificadorDeCartaMaisAlta).Desempatar(_maoA, _maoB);

            Assert.Empty(jogadaEncontrada);
        }
        public void DeveEncontrarACartaMaisAlta()
        {
            var cartaEsperada = CartaBuilder.UmaCarta().ComValor(10).ComNaipe(Naipes.Hearts).Construir();

            var cartaEncontrada = new IdentificaCartaMaisAlta().IdentificarCartas(_listaDeCartas).First();

            Assert.Equal(cartaEsperada.Valor, cartaEncontrada.Valor);
        }
Example #6
0
        public void NaoDeveEncontrarAJogadaNaMaoSeAlgumaCartaForDeNaipeDiferente()
        {
            _maoDe5Cartas[0] = CartaBuilder.UmaCarta().ComValor(10).ComNaipe(Naipes.Diamonds).Construir();

            var jogadaEncontradaNaMao = _flush.JogadaEncontradaNaMao(_maoDe5Cartas);

            Assert.False(jogadaEncontradaNaMao);
        }
Example #7
0
        public void NaoDeveEncontrarAJogadaNaMaoQuandoNaoTiverUmPar()
        {
            _maoDe5Cartas[1] = CartaBuilder.UmaCarta().ComValor(3).ComNaipe(Naipes.Hearts).Construir();

            var jogadaEncontradaNaMao = _fullHouse.JogadaEncontradaNaMao(_maoDe5Cartas);

            Assert.False(jogadaEncontradaNaMao);
        }
Example #8
0
        public void NaoDeveEncontrarAJogadaNaMaoSeNaoHouverTrinca()
        {
            _maoDe5Cartas[0] = CartaBuilder.UmaCarta().ComValor(3).ComNaipe(Naipes.Hearts).Construir();

            var jogadaEncontradaNaMao = _umaTrinca.JogadaEncontradaNaMao(_maoDe5Cartas);

            Assert.False(jogadaEncontradaNaMao);
        }
        public void NaoDeveDesempatarEntreCartasMaisAltasEmMaosIguais()
        {
            _maoB[0] = CartaBuilder.UmaCarta().ComValor(2).ComNaipe(Naipes.Diamonds).Construir();

            var jogadaVencedoraEncontrada = _desempateDeCartaMaisAlta.Desempatar(_maoA, _maoB);

            Assert.Empty(jogadaVencedoraEncontrada);
        }
Example #10
0
        public void NaoDeveEncontrarAJogadaNaMaoSeNaoForUmaSequencia()
        {
            _maoDe5Cartas[0] = CartaBuilder.UmaCarta().ComValor(2).ComNaipe(Naipes.Hearts).Construir();

            var jogadaEncontradaNaMao = _straight.JogadaEncontradaNaMao(_maoDe5Cartas);

            Assert.False(jogadaEncontradaNaMao);
        }
        public void NaoDeveIdentificarSeNaoHouverQuatroCartasComValorIgual()
        {
            _listaDeCartas[0] = CartaBuilder.UmaCarta().ComValor(5).ComNaipe(Naipes.Spades).Construir();

            var quadraEncontrada = new IdentificaQuatroCartasComValoresIguais().IdentificarCartas(_listaDeCartas);

            Assert.Empty(quadraEncontrada);
        }
Example #12
0
        public void NaoDeveEncontrarAJogadaNaMaoSePeloMenosUmNaipeForDiferentes()
        {
            _maoDe5Cartas[0] = CartaBuilder.UmaCarta().ComValor(13).ComNaipe(Naipes.Diamonds).Construir();

            var jogadaEncontradaNaMao = _royalFlush.JogadaEncontradaNaMao(_maoDe5Cartas);

            Assert.False(jogadaEncontradaNaMao);
        }
Example #13
0
        public void NaoDeveEncontrarAJogadaNaMaoSeASequenciaEstiverQuebrada()
        {
            _maoDe5Cartas[0] = CartaBuilder.UmaCarta().ComValor(2).ComNaipe(Naipes.Hearts).Construir();

            var jogadaEncontradaNaMao = _royalFlush.JogadaEncontradaNaMao(_maoDe5Cartas);

            Assert.False(jogadaEncontradaNaMao);
        }
        public void DeveConverterUmaCartaValida(string cartaDeEntrada, int valor, Naipes naipe)
        {
            var cartaEsperada = CartaBuilder.UmaCarta().ComNaipe(naipe).ComValor(valor).Construir();

            var cartaConvertida = new ConversorDeCarta(new ConversorDeValorDeCarta(), new ConversorDeNaipe()).Converter(cartaDeEntrada);

            Assert.Equal(cartaEsperada.Valor, cartaConvertida.Valor);
            Assert.Equal(cartaEsperada.Naipe, cartaConvertida.Naipe);
        }
        public void NaoDeveEncontrarAJogadaNaMaoSeNaoHouverDoisPares()
        {
            _maoDe5Cartas[1] = CartaBuilder.UmaCarta().ComValor(3).ComNaipe(Naipes.Hearts).Construir();

            var jogadaEncontradaNaMao =
                _doisParesDiferentes.JogadaEncontradaNaMao(_maoDe5Cartas);

            Assert.False(jogadaEncontradaNaMao);
        }
Example #16
0
        public void NaoDeveGerarClassificacaoCasoHajaCartasDuplicadas()
        {
            var cartaBuilderGerada = new CartaBuilder("A;O|K;C", "Q;C|10;C|K;C|8;P|A;O");
            var maoGerada          = new Mao(cartaBuilderGerada.CartasJogador[0], cartaBuilderGerada.CartasJogador[1]);

            string mensagemDeErro = Assert.Throws <Exception>(() => maoGerada.Classificar(cartaBuilderGerada.CartasMesa)).Message;

            Assert.Equal($"{Ressource.MaoMsgCartasClassificacaoDuplicadas} A;O|K;C", mensagemDeErro);
        }
        public void NaoDeveIndetificarSeUmNaipeForDiferente()
        {
            _listaDeCartas[0] = CartaBuilder.UmaCarta().ComValor(5).ComNaipe(Naipes.Spades).Construir();

            var todosOsNaipesSaoIguais =
                new IdentificaCincoCartasComNaipesIguais().IdentificarCartas(_listaDeCartas).Count == 5;

            Assert.False(todosOsNaipesSaoIguais);
        }
        public void DeveDesempatarEntreDoisParesDiferentesComParMaiorIgual()
        {
            _maoA[3] = CartaBuilder.UmaCarta().ComValor(5).ComNaipe(Naipes.Hearts).Construir();
            var jogadaVencedoraEsperada = _maoB.Select(carta => carta.HashDaCarta).ToList();

            var jogadaVencedoraEncontrada = new DesempateDeDoisPares(_identificadorDePar)
                                            .Desempatar(_maoA, _maoB).Select(carta => carta.HashDaCarta).ToList();

            Assert.Equal(jogadaVencedoraEsperada, jogadaVencedoraEncontrada);
        }
Example #19
0
        public void DeveClassificarEGerarPontuacaoDaJogada(string cartasJogador, string cartasMesa, long pontuacaoEsperada, string classificacaoEsperada)
        {
            var cartaBuilderGerada = new CartaBuilder(cartasJogador, cartasMesa);
            var maoGerada          = new Mao(cartaBuilderGerada.CartasJogador[0], cartaBuilderGerada.CartasJogador[1]);

            maoGerada.Classificar(cartaBuilderGerada.CartasMesa);

            Assert.Equal(classificacaoEsperada, maoGerada.Classificacao);
            Assert.Equal(pontuacaoEsperada, maoGerada.Pontuacao);
        }
        public void NaoDeveEncontrarTresCartasIguais()
        {
            _listaDeCartas[0] = CartaBuilder.UmaCarta().ComValor(10).ComNaipe(Naipes.Diamonds).Construir();
            var tresCartasEsperadas = _tresCartasEsperadas.Select(carta => carta.HashDaCarta).ToList();

            var tresCartasEncontradas = new IdentificaTresCartasComValoresIguais().IdentificarCartas(_listaDeCartas)
                                        .Select(carta => carta.HashDaCarta).ToList();

            Assert.NotEqual(tresCartasEsperadas, tresCartasEncontradas);
        }
 public IdentificadorDeQuatroCartasComValoresIguaisTeste()
 {
     _listaDeCartas = new List <Carta>
     {
         CartaBuilder.UmaCarta().ComValor(10).ComNaipe(Naipes.Spades).Construir(),
         CartaBuilder.UmaCarta().ComValor(10).ComNaipe(Naipes.Clubs).Construir(),
         CartaBuilder.UmaCarta().ComValor(10).ComNaipe(Naipes.Hearts).Construir(),
         CartaBuilder.UmaCarta().ComValor(10).ComNaipe(Naipes.Diamonds).Construir(),
         CartaBuilder.UmaCarta().ComValor(4).ComNaipe(Naipes.Hearts).Construir()
     };
 }
Example #22
0
        public void DeveLimparAMaoDoJogadorAposEncerrarAJogada()
        {
            var cartaBuilder = new CartaBuilder("A;P|K;O");
            var fichasGanhas = 500;

            _jogadorDefault.ReceberCarta(cartaBuilder.CartasJogador[0]);
            _jogadorDefault.ReceberCarta(cartaBuilder.CartasJogador[1]);
            _jogadorDefault.EncerrarMao(fichasGanhas);

            Assert.Null(_jogadorDefault.Mao);
        }
 public IdentificaCincoCartasComNaipesIguaisTeste()
 {
     _listaDeCartas = new List <Carta>
     {
         CartaBuilder.UmaCarta().ComValor(10).ComNaipe(Naipes.Hearts).Construir(),
         CartaBuilder.UmaCarta().ComValor(5).ComNaipe(Naipes.Hearts).Construir(),
         CartaBuilder.UmaCarta().ComValor(8).ComNaipe(Naipes.Hearts).Construir(),
         CartaBuilder.UmaCarta().ComValor(2).ComNaipe(Naipes.Hearts).Construir(),
         CartaBuilder.UmaCarta().ComValor(4).ComNaipe(Naipes.Hearts).Construir()
     };
 }
Example #24
0
        public void NaoDeveDarCartasAJogadorEliminado()
        {
            var cartaBuilder = new CartaBuilder("A;P|K;O");

            _jogadorDefault.TrocarStatus(StatusJogador.Eliminado);

            _jogadorDefault.ReceberCarta(cartaBuilder.CartasJogador[0]);
            _jogadorDefault.ReceberCarta(cartaBuilder.CartasJogador[1]);

            Assert.Null(_jogadorDefault.Mao);
        }
Example #25
0
        public void DeveDesempatarEntreDuasTrincasIguais()
        {
            _maoB    = _maoA.Select(carta => carta).ToList();
            _maoA[4] = CartaBuilder.UmaCarta().ComValor(8).ComNaipe(Naipes.Hearts).Construir();
            var maoVencedoraEsperada = _maoA.Select(carta => carta.HashDaCarta).ToList();

            var maoVencedoraEncontrada = new DesempateDeTrinca(_identificadorDeTrinca, _identificadorDeCartaMaisAlta)
                                         .Desempatar(_maoA, _maoB).Select(carta => carta.HashDaCarta).ToList();

            Assert.Equal(maoVencedoraEsperada, maoVencedoraEncontrada);
        }
 public IdentificaSequenciaDeCartasTeste()
 {
     _listaDeCartas = new List <Carta>
     {
         CartaBuilder.UmaCarta().ComValor(4).Construir(),
         CartaBuilder.UmaCarta().ComValor(3).Construir(),
         CartaBuilder.UmaCarta().ComValor(2).Construir(),
         CartaBuilder.UmaCarta().ComValor(6).Construir(),
         CartaBuilder.UmaCarta().ComValor(5).Construir()
     };
 }
Example #27
0
        public void DeveDesempatarEntreDoisParesIguais()
        {
            _maoA    = _maoB.Select(carta => carta).ToList();
            _maoA[4] = CartaBuilder.UmaCarta().ComValor(12).ComNaipe(Naipes.Hearts).Construir();

            var maoVencedoraEsperada = _maoA.Select(carta => carta.HashDaCarta).ToList();

            var maoVencedoraEncontrada = _desempateDeUmPar.Desempatar(_maoA, _maoB)
                                         .Select(carta => carta.HashDaCarta).ToList();

            Assert.Equal(maoVencedoraEsperada, maoVencedoraEncontrada);
        }
Example #28
0
        public void DeveReceberCartas()
        {
            var cartaBuilder = new CartaBuilder("A;P|K;O");
            var quantidadeDeCartasEsperada = 2;

            _jogadorDefault.ReceberCarta(cartaBuilder.CartasJogador[0]);
            _jogadorDefault.ReceberCarta(cartaBuilder.CartasJogador[1]);

            Assert.True(_jogadorDefault.Mao.Cartas.Any());
            Assert.Equal(quantidadeDeCartasEsperada, _jogadorDefault.Mao.Cartas.Count());
            Assert.Equal(cartaBuilder.CartasJogador[0].Id, _jogadorDefault.Mao.Cartas[0].Id);
            Assert.Equal(cartaBuilder.CartasJogador[1].Id, _jogadorDefault.Mao.Cartas[1].Id);
        }
        public UmParDeCartasTeste()
        {
            _maoDe5Cartas = new List <Carta>
            {
                CartaBuilder.UmaCarta().ComValor(1).ComNaipe(Naipes.Diamonds).Construir(),
                CartaBuilder.UmaCarta().ComValor(2).ComNaipe(Naipes.Hearts).Construir(),
                CartaBuilder.UmaCarta().ComValor(7).ComNaipe(Naipes.Spades).Construir(),
                CartaBuilder.UmaCarta().ComValor(7).ComNaipe(Naipes.Diamonds).Construir(),
                CartaBuilder.UmaCarta().ComValor(9).ComNaipe(Naipes.Hearts).Construir()
            };
            var identificadorDePar = new IdentificaDuasCartasComValoresIguais();

            _umParDeCartas = new UmParDeCartas(identificadorDePar);
        }
        public DoisParesDiferentesTeste()
        {
            _maoDe5Cartas = new List <Carta>
            {
                CartaBuilder.UmaCarta().ComValor(1).ComNaipe(Naipes.Hearts).Construir(),
                CartaBuilder.UmaCarta().ComValor(5).ComNaipe(Naipes.Spades).Construir(),
                CartaBuilder.UmaCarta().ComValor(5).ComNaipe(Naipes.Diamonds).Construir(),
                CartaBuilder.UmaCarta().ComValor(9).ComNaipe(Naipes.Clubs).Construir(),
                CartaBuilder.UmaCarta().ComValor(9).ComNaipe(Naipes.Hearts).Construir()
            };
            var identificadorDePar = new IdentificaDuasCartasComValoresIguais();

            _doisParesDiferentes = new DoisParesDiferentes(identificadorDePar);
        }