Esempio n. 1
0
        public void HandIsHighCard()
        {
            //Arrange
            List <Card> cards = new List <Card>();

            cards.Add(new Card(Suits.Hearts, 7));
            cards.Add(new Card(Suits.Hearts, "A"));
            cards.Add(new Card(Suits.Spades, 6));
            cards.Add(new Card(Suits.Clubes, 3));
            cards.Add(new Card(Suits.Hearts, "K"));
            cards.Add(new Card(Suits.Dimensions, 2));
            cards.Add(new Card(Suits.Hearts, 9));

            //Act
            HighCard h        = new HighCard();
            Hand     highCard = h.IsMatch(cards).Value;

            //Assert
            Assert.IsNotNull(highCard);
            Assert.AreEqual(5, highCard.CardsInTheHand.Count);
            Assert.AreEqual <int>(14, highCard.CardsInTheHand[0].Value);
            Assert.AreEqual <int>(13, highCard.CardsInTheHand[1].Value);
            Assert.AreEqual <int>(9, highCard.CardsInTheHand[2].Value);
            Assert.AreEqual <int>(7, highCard.CardsInTheHand[3].Value);
            Assert.AreEqual <int>(6, highCard.CardsInTheHand[4].Value);
            Assert.AreEqual(Constancts.HandRanks.HighCard, highCard.Rank);
        }
Esempio n. 2
0
        public void test_scores()
        {
            var highCard = new HighCard();

            Assert.AreEqual(0, highCard.Score);
            var onePair = new OnePair();

            Assert.AreEqual(1, onePair.Score);
            var twoPairs = new TwoPairs();

            Assert.AreEqual(2, twoPairs.Score);
            var set = new Set();

            Assert.AreEqual(3, set.Score);
            var straight = new Straight();

            Assert.AreEqual(4, straight.Score);
            var flush = new Flush();

            Assert.AreEqual(5, flush.Score);
            var fullHouse = new FullHouse();

            Assert.AreEqual(6, fullHouse.Score);
            var quads = new Quads();

            Assert.AreEqual(7, quads.Score);
            var straightFlush = new StraightFlush();

            Assert.AreEqual(8, straightFlush.Score);
            var royalFlush = new RoyalFlush();

            Assert.AreEqual(9, royalFlush.Score);
        }
Esempio n. 3
0
        public void Test_HighCard_CreateInstance(string strCards, bool isValid)
        {
            var cards    = Utils.ParseCards(strCards);
            var highCard = HighCard.CreateInstance(cards);

            CreateInstanceHelper(highCard, HandRanks.HighCard, cards, isValid);
        }
        public void HigherCard_should_be_serialized_and_deserialized_correctly_to_the_exact_type()
        {
            var pokerHand = new HighCard(Rank.Ace);

            var deserializedObject = SerializationTestHelper.SerializeAndDeserialize(pokerHand);

            Assert.IsType <HighCard>(deserializedObject);
        }
Esempio n. 5
0
        public void GivenHandCardThenCheckIfHighCard(string handCard, bool expectedResult)
        {
            var handCardFormatted = Common.ConvertCardStringToList(handCard);

            var isStraightFlush = new HighCard().IsThisType(handCardFormatted);

            Assert.True(isStraightFlush == expectedResult);
        }
Esempio n. 6
0
        public void Test_HighCard_ComparableTests(string strInputA, string strInputB, int comp)
        {
            var cardsA = Utils.ParseCards(strInputA);
            var cardsB = Utils.ParseCards(strInputB);

            var highCardOne = HighCard.CreateInstance(cardsA);
            var highCardTwo = HighCard.CreateInstance(cardsB);

            ComparableTestsHelper(highCardOne, highCardTwo, comp);
        }
Esempio n. 7
0
        public void TestHighCardHandOutcomes(HighCardTestHand testHand)
        {
            var standardDeck = new StandardDeck();
            var highCardGame = new HighCard();

            var playerHand  = HighCardTestHand.GetPlayerHand(testHand.PlayerHand, standardDeck);
            var oponentHand = HighCardTestHand.GetPlayerHand(testHand.OpponentHand, standardDeck);

            Assert.AreEqual(testHand.HandOutcome, highCardGame.GetHandOutcome(playerHand, oponentHand));
        }
Esempio n. 8
0
        public void Test_HighCard_EqualityOperators(string strInputA, string strInputB, bool areEqual)
        {
            var cardsA = Utils.ParseCards(strInputA);
            var cardsB = Utils.ParseCards(strInputB);

            var highCardOne = HighCard.CreateInstance(cardsA);
            var highCardTwo = HighCard.CreateInstance(cardsB);

            EqualityOperatorsHelper(highCardOne, highCardTwo, areEqual);
        }
        public void Constructor_WithValidCardsForHighCard_StoresSortedHighCardCards()
        {
            List <Card> cards = TestUtil.CreateDefaultHighCardCards();
            HighCard    hand  = new HighCard(cards);

            Assert.AreEqual(hand.sortedCards[0], new Card(CardValue.Jack, Suit.Heart));
            Assert.AreEqual(hand.sortedCards[1], new Card(CardValue.Nine, Suit.Club));
            Assert.AreEqual(hand.sortedCards[2], new Card(CardValue.Eight, Suit.Diamond));
            Assert.AreEqual(hand.sortedCards[3], new Card(CardValue.Seven, Suit.Spade));
            Assert.AreEqual(hand.sortedCards[4], new Card(CardValue.Four, Suit.Heart));
        }
Esempio n. 10
0
        public void DealGame()
        {
            var rounds  = 50;
            var players = 5;

            foreach (var round in Enumerable.Range(1, rounds))
            {
                var highcardGame = new HighCard();
                highcardGame.CreateGame(players);
                highcardGame.DealHand();
                highcardGame.OutputHandResults();
            }
        }
Esempio n. 11
0
        public void HandHighCardTestDuplicate()
        {
            //Arrange
            List <Card> cards = new List <Card>();

            cards.Add(new Card(Suits.Clubes, "A"));
            cards.Add(new Card(Suits.Clubes, "A"));

            //Act
            HighCard hand = new HighCard();

            //Assert
            Assert.ThrowsException <InvalidOperationException>(() => hand.IsMatch(cards));
        }
Esempio n. 12
0
        public void Test_HighCard_EqualityOperators_ForNull()
        {
            var cards    = Utils.ParseCards("7S 3H 5D KC 2C");
            var highCard = HighCard.CreateInstance(cards);

            Assert.False(highCard.Equals(null));

            Assert.True((HighCard)null == (HighCard)null);
            Assert.False((HighCard)null == highCard);
            Assert.False(highCard == (HighCard)null);

            Assert.False((HighCard)null != (HighCard)null);
            Assert.True((HighCard)null != highCard);
            Assert.True(highCard != (HighCard)null);
        }
Esempio n. 13
0
        public void HighCardUnitTests_1()
        {
            var highCardsHands = new Dictionary <long, string>()
            {
                //{0x0008004002001000, string.Empty},                                      // 0000 0000 0000/1000 0000.0000 0/100.0000 0000.00/10 0000.0000 000/1.0000 0000.0000
                { 0x0000000000445111L, string.Empty }                                         // 0000 0000 0000/0000 0000.0000 0/000.0000 0000.00/00 0100.0100 010/1.0001 0001.0001
            };

            var pht = new HighCard();

            foreach (var hand in highCardsHands)
            {
                var ph = new PokerHand(hand.Key);
                Assert.True(pht.Parse(ph), hand.Value);
                Assert.Equal(PokerHandAnalyzer.Strength.HighCard, ph.Strength);
            }
        }
Esempio n. 14
0
        public void HighCardUnitTests_1()
        {
            var highCardsHands = new Dictionary<long, string>()
            {
                //{0x0008004002001000, string.Empty},                                      // 0000 0000 0000/1000 0000.0000 0/100.0000 0000.00/10 0000.0000 000/1.0000 0000.0000
                {0x0000000000445111L, string.Empty}                                         // 0000 0000 0000/0000 0000.0000 0/000.0000 0000.00/00 0100.0100 010/1.0001 0001.0001
            };

            var pht = new HighCard();

            foreach (var hand in highCardsHands)
            {
                var ph = new PokerHand(hand.Key);
                Assert.True(pht.Parse(ph), hand.Value);
                Assert.Equal(PokerHandAnalyzer.Strength.HighCard, ph.Strength);
            }
        }
        public void CompareTo_ComparesHighCardHands_ReturnsComparison()
        {
            List <Card> cards1 = TestUtil.CreateDefaultHighCardCards();
            HighCard    hand1  = new HighCard(cards1);

            List <Card> cards2 = new List <Card>
            {
                new Card(CardValue.Jack, Suit.Heart),
                new Card(CardValue.Seven, Suit.Spade),
                new Card(CardValue.Nine, Suit.Club),
                new Card(CardValue.Eight, Suit.Diamond),
                new Card(CardValue.Three, Suit.Heart)
            };
            HighCard hand2 = new HighCard(cards2);

            Assert.IsTrue(hand1.CompareTo(hand2) > 0);
        }
Esempio n. 16
0
        public string RankDescription()
        {
            string sRankDescription = HighCard.RankStr() + LowCard.RankStr();

            if (HighCard.Rank != LowCard.Rank)
            {
                if (HighCard.Suit == LowCard.Suit)
                {
                    sRankDescription += "s";
                }
                else
                {
                    sRankDescription += "o";
                }
            }

            return(sRankDescription);
        }
        private static decimal EvaluateDeck(List <Card> deck, out string playerHand)
        {
            deck.Sort();
            SortBySuit(ref deck);
            playerHand = string.Empty;
            decimal     res = 0;
            Combination var;
            var         keys = new List <Card>();

            if (Combination.IsStraight(deck) && Combination.IsFlush(deck))
            {
                var        = new StraightFlush(deck);
                playerHand = var.PlayerHand;
                res        = var.Score;
            }
            else if (Combination.IsNofAKind(4, deck, out keys))
            {
                var        = new FourOfAKind(deck);
                playerHand = var.PlayerHand;
                res        = var.Score;
            }
            else if (Combination.IsFullHouse(deck, out Card key))
            {
                var        = new FullHouse(deck);
                playerHand = var.PlayerHand;
                res        = var.Score;
            }
            else if (Combination.IsFlush(deck))
            {
                var        = new Flush(deck);
                playerHand = var.PlayerHand;
                res        = var.Score;
            }
            else if (Combination.IsStraight(deck))
            {
                var        = new Straight(deck);
                playerHand = var.PlayerHand;
                res        = var.Score;
            }
            else if (Combination.IsNofAKind(3, deck, out keys))
            {
                var        = new ThreeOfAKind(deck);
                playerHand = var.PlayerHand;
                res        = var.Score;
            }
            else if (Combination.IsTwoPairs(deck, out keys))
            {
                var        = new TwoPairs(deck);
                playerHand = var.PlayerHand;
                res        = var.Score;
            }
            else if (Combination.IsNofAKind(2, deck, out keys))
            {
                var        = new Pair(deck);
                playerHand = var.PlayerHand;
                res        = var.Score;
            }
            else
            {
                deck.Sort();
                deck.Reverse();
                var        = new HighCard(deck);
                playerHand = var.PlayerHand;
                res        = var.Score;
            }
            return(res);
        }
Esempio n. 18
0
 public void SetUp()
 {
     _highCard = new HighCard();
 }
Esempio n. 19
0
 public override string ToString()
 {
     return($"{HandType} with {HighCard.ToString()}");
 }
Esempio n. 20
0
        public override string ToString()
        {
            var name = new StringBuilder();

            if (CombinationType != Combination.UnSet)
            {
                switch (CombinationType)
                {
                case Combination.RoyalFlush:
                    name.Append("Royal flush of ");
                    name.Append(HighCard.Suit.ToString().ToLower());
                    return(name.ToString());

                case Combination.StraightFlush:
                    name.Append("Straight flush to ");
                    name.Append(HighCard.ToString().ToLower());
                    return(name.ToString());

                case Combination.FourOfAKind:
                    name.Append("Four of a kind ");
                    name.Append(HighCard.FirstNamePlural.ToLower());
                    name.Append(" with ");
                    name.Append(Kickers[0].Initial);
                    name.Append(" kicker");
                    return(name.ToString());

                case Combination.FullHouse:
                    name.Append("Full house ");
                    name.Append(HighGroup[0].FirstNamePlural);
                    name.Append(" full of ");
                    name.Append(LowGroup[0].FirstNamePlural);
                    return(name.ToString());

                case Combination.Flush:
                    name.Append("Flush of ");
                    name.Append(HighCard.Suit.ToString().ToLower());
                    name.Append(" to ");
                    name.Append(HighCard.FirstName);
                    return(name.ToString());

                case Combination.Straight:
                    name.Append("Straight to ");
                    name.Append(HighCard.FirstName);
                    return(name.ToString());

                case Combination.ThreeOfAKind:
                    name.Append("Three of a kind ");
                    name.Append(HighGroup[0].FirstNamePlural);
                    name.Append(" with ");
                    name.Append(Kickers[0].Initial);
                    name.Append(", ");
                    name.Append(Kickers[1].Initial);
                    name.Append(" kickers");
                    return(name.ToString());

                case Combination.TwoPairs:
                    name.Append("Two pairs ");
                    name.Append(HighGroup[0].FirstNamePlural);
                    name.Append(" and ");
                    name.Append(LowGroup[0].FirstNamePlural);
                    name.Append(" with ");
                    name.Append(Kickers[0].Initial);
                    name.Append(" kicker");
                    return(name.ToString());

                case Combination.APair:
                    name.Append("A pair of ");
                    name.Append(HighGroup[0].FirstNamePlural);
                    name.Append(" with ");
                    name.Append(Kickers[0].Initial);
                    name.Append(", ");
                    name.Append(Kickers[1].Initial);
                    name.Append(", ");
                    name.Append(Kickers[2].Initial);
                    name.Append(" kickers");
                    return(name.ToString());

                case Combination.HighCard:
                    name.Append("High card ");
                    name.Append(HighCard.FirstName);
                    name.Append(" with ");
                    name.Append(Kickers[0].Initial);
                    name.Append(", ");
                    name.Append(Kickers[1].Initial);
                    name.Append(", ");
                    name.Append(Kickers[2].Initial);
                    name.Append(", ");
                    name.Append(Kickers[3].Initial);
                    name.Append(" kickers");
                    return(name.ToString());
                }
            }
            return("Not set");
        }