public void WinWith_ThreeOfAKing_Two()
        {
            List <Card> cards = new List <Card>
            {
                new Card {
                    CardType = CardType.Hearts, Value = CardValue.Two
                },
                new Card {
                    CardType = CardType.Diamonds, Value = CardValue.Two
                },
                new Card {
                    CardType = CardType.Spades, Value = CardValue.Two
                },
                new Card {
                    CardType = CardType.Clubs, Value = CardValue.Nine
                },
                new Card {
                    CardType = CardType.Diamonds, Value = CardValue.King
                },
            };

            PokerHand PokerHand = new PokerHand(cards, null);
            var       result    = PokerHand.ResolveCards(cards);
            var       excepted  = new PokerHandResult {
                Card = new Card {
                    Value = CardValue.Two
                }, Type = PokerType.ThreeOfAKind
            };

            Assert.AreEqual(excepted.Type, result.Type);
            Assert.AreEqual(excepted.Card.Value, result.Card.Value);
        }
Beispiel #2
0
        public PokerHandResult Resolve()
        {
            PokerHandResult pokerResult = new PokerHandResult();

            pokerResult = ResolveCards(CardsOne);
            //ResolveCards(CardsTwo);
            return(pokerResult);
        }
Beispiel #3
0
        private static PokerHandResult getHighCardResult(List <Card> cards, PokerHandResult pokerResult)
        {
            int  maxValue = cards.Max(x => (int)x.Value);
            Card card     = cards.First(x => (int)x.Value == maxValue);

            pokerResult = new PokerHandResult {
                Card = card, Type = PokerType.HighCard
            };
            return(pokerResult);
        }
Beispiel #4
0
        private static PokerHandResult getThreeOfAKingCardResult(List <Card> cards, PokerHandResult pokerResult)
        {
            var  cardPair = cards.GroupBy(x => x.Value).Select(x => x.First()).First();
            Card card     = new Card {
                Value = cardPair.Value
            };

            pokerResult = new PokerHandResult {
                Card = card, Type = PokerType.ThreeOfAKind
            };
            return(pokerResult);
        }
        public void PlayersOneWinWithHighCardAce()
        {
            List <Card> cardsOne = new List <Card>
            {
                new Card {
                    CardType = CardType.Hearts, Value = CardValue.Two
                },
                new Card {
                    CardType = CardType.Diamonds, Value = CardValue.Three
                },
                new Card {
                    CardType = CardType.Spades, Value = CardValue.Five
                },
                new Card {
                    CardType = CardType.Clubs, Value = CardValue.Nine
                },
                new Card {
                    CardType = CardType.Diamonds, Value = CardValue.King
                },
            };

            List <Card> cardsTwo = new List <Card>
            {
                new Card {
                    CardType = CardType.Clubs, Value = CardValue.Two
                },
                new Card {
                    CardType = CardType.Hearts, Value = CardValue.Three
                },
                new Card {
                    CardType = CardType.Spades, Value = CardValue.Four
                },
                new Card {
                    CardType = CardType.Clubs, Value = CardValue.Height
                },
                new Card {
                    CardType = CardType.Hearts, Value = CardValue.Ace
                },
            };

            PokerHand PokerHand = new PokerHand(cardsOne, cardsTwo);
            var       result    = PokerHand.Resolve();
            var       excepted  = new PokerHandResult {
                Winner = "Two", Card = new Card {
                    Value = CardValue.Ace, CardType = CardType.Hearts
                }
            };

            Assert.AreEqual(excepted, result);
        }
Beispiel #6
0
        public PokerHandResult ResolveCards(List <Card> cards)
        {
            PokerHandResult pokerResult          = new PokerHandResult();
            bool            isHighCardResult     = cards.Where(x => (int)x.Value <= 10).Count() == 5 ? true : false;
            bool            isPairCardResult     = cards.GroupBy(x => x.Value).Select(x => x.First()).Count() == 4 ? true : false;
            bool            isThreeofAKingResult = cards.GroupBy(x => x.Value).Select(x => x.First()).Count() == 3 ? true : false;

            if (isHighCardResult && !isPairCardResult && !isThreeofAKingResult)
            {
                return(getHighCardResult(cards, pokerResult));
            }

            if (isPairCardResult)
            {
                return(getPairCardResult(cards, pokerResult));
            }

            if (isThreeofAKingResult)
            {
                return(getThreeOfAKingCardResult(cards, pokerResult));
            }

            return(pokerResult);
        }