Exemplo n.º 1
0
        public void TestHighCardIsFound()
        {
            PokerHand hand = new PokerHand("");

            hand.AddCard(CardValues.Seven, Suits.Hearts);
            hand.AddCard(CardValues.Five, Suits.Clubs);
            hand.AddCard(CardValues.Four, Suits.Hearts);
            hand.AddCard(CardValues.Three, Suits.Hearts);
            hand.AddCard(CardValues.Two, Suits.Hearts);

            Assert.AreEqual(PokerHandValues.HighCard, hand.Value);
        }
Exemplo n.º 2
0
        public void TestThreeOfAKindIsFound()
        {
            PokerHand hand = new PokerHand("");

            hand.AddCard(CardValues.Five, Suits.Hearts);
            hand.AddCard(CardValues.Five, Suits.Clubs);
            hand.AddCard(CardValues.Five, Suits.Diamonds);

            hand.AddCard(CardValues.Four, Suits.Hearts);
            hand.AddCard(CardValues.Three, Suits.Hearts);

            Assert.AreEqual(PokerHandValues.ThreeOfAKind, hand.Value);
        }
Exemplo n.º 3
0
        public void TestFullHouseIsFound()
        {
            PokerHand hand = new PokerHand("");

            hand.AddCard(CardValues.Five, Suits.Hearts);
            hand.AddCard(CardValues.Five, Suits.Clubs);
            hand.AddCard(CardValues.Five, Suits.Diamonds);

            hand.AddCard(CardValues.Four, Suits.Hearts);
            hand.AddCard(CardValues.Four, Suits.Clubs);

            Assert.AreEqual(PokerHandValues.FullHouse, hand.Value);
        }
Exemplo n.º 4
0
        public void CanIdentifyThreeOfAKind()
        {
            var sut = new PokerHand();

            sut.AddCard(new Card(Suit.Heart, Value.Two));
            sut.AddCard(new Card(Suit.Club, Value.Two));
            sut.AddCard(new Card(Suit.Spade, Value.Seven));
            sut.AddCard(new Card(Suit.Diamond, Value.Eight));
            sut.AddCard(new Card(Suit.Heart, Value.Two));

            var handStrength = sut.GetHandStrength();

            Assert.AreEqual(HandStrength.ThreeOfAKind, handStrength);
        }
Exemplo n.º 5
0
        public void AHandOf5UnrelatedCardsIsWorthNothing()
        {
            var sut = new PokerHand();

            sut.AddCard(new Card(Suit.Heart, Value.Two));
            sut.AddCard(new Card(Suit.Club, Value.Three));
            sut.AddCard(new Card(Suit.Spade, Value.Seven));
            sut.AddCard(new Card(Suit.Diamond, Value.Eight));
            sut.AddCard(new Card(Suit.Heart, Value.Ten));

            var handStrength = sut.GetHandStrength();

            Assert.AreEqual(HandStrength.Nothing, handStrength);
        }
Exemplo n.º 6
0
        public void TestFlushIsFound()
        {
            PokerHand heartsHand   = new PokerHand("");
            PokerHand clubsHand    = new PokerHand("");
            PokerHand diamondsHand = new PokerHand("");
            PokerHand spadesHand   = new PokerHand("");

            heartsHand.AddCard(CardValues.Seven, Suits.Hearts);
            heartsHand.AddCard(CardValues.Five, Suits.Hearts);
            heartsHand.AddCard(CardValues.Four, Suits.Hearts);
            heartsHand.AddCard(CardValues.Three, Suits.Hearts);
            heartsHand.AddCard(CardValues.Two, Suits.Hearts);

            clubsHand.AddCard(CardValues.Seven, Suits.Clubs);
            clubsHand.AddCard(CardValues.Five, Suits.Clubs);
            clubsHand.AddCard(CardValues.Four, Suits.Clubs);
            clubsHand.AddCard(CardValues.Three, Suits.Clubs);
            clubsHand.AddCard(CardValues.Two, Suits.Clubs);

            diamondsHand.AddCard(CardValues.Seven, Suits.Diamonds);
            diamondsHand.AddCard(CardValues.Five, Suits.Diamonds);
            diamondsHand.AddCard(CardValues.Four, Suits.Diamonds);
            diamondsHand.AddCard(CardValues.Three, Suits.Diamonds);
            diamondsHand.AddCard(CardValues.Two, Suits.Diamonds);

            spadesHand.AddCard(CardValues.Seven, Suits.Spades);
            spadesHand.AddCard(CardValues.Five, Suits.Spades);
            spadesHand.AddCard(CardValues.Four, Suits.Spades);
            spadesHand.AddCard(CardValues.Three, Suits.Spades);
            spadesHand.AddCard(CardValues.Two, Suits.Spades);


            Assert.AreEqual(PokerHandValues.Flush, heartsHand.Value);
            Assert.AreEqual(PokerHandValues.Flush, clubsHand.Value);
            Assert.AreEqual(PokerHandValues.Flush, diamondsHand.Value);
            Assert.AreEqual(PokerHandValues.Flush, spadesHand.Value);
        }
Exemplo n.º 7
0
        public void TestRoyalFlushIsFound()
        {
            PokerHand heartHand   = new PokerHand("");
            PokerHand clubHand    = new PokerHand("");
            PokerHand diamondHand = new PokerHand("");
            PokerHand spadeHand   = new PokerHand("");

            heartHand.AddCard(CardValues.Ace, Suits.Hearts);
            heartHand.AddCard(CardValues.King, Suits.Hearts);
            heartHand.AddCard(CardValues.Queen, Suits.Hearts);
            heartHand.AddCard(CardValues.Jack, Suits.Hearts);
            heartHand.AddCard(CardValues.Ten, Suits.Hearts);

            clubHand.AddCard(CardValues.Ace, Suits.Clubs);
            clubHand.AddCard(CardValues.King, Suits.Clubs);
            clubHand.AddCard(CardValues.Queen, Suits.Clubs);
            clubHand.AddCard(CardValues.Jack, Suits.Clubs);
            clubHand.AddCard(CardValues.Ten, Suits.Clubs);

            diamondHand.AddCard(CardValues.Ace, Suits.Diamonds);
            diamondHand.AddCard(CardValues.King, Suits.Diamonds);
            diamondHand.AddCard(CardValues.Queen, Suits.Diamonds);
            diamondHand.AddCard(CardValues.Jack, Suits.Diamonds);
            diamondHand.AddCard(CardValues.Ten, Suits.Diamonds);

            spadeHand.AddCard(CardValues.Ace, Suits.Spades);
            spadeHand.AddCard(CardValues.King, Suits.Spades);
            spadeHand.AddCard(CardValues.Queen, Suits.Spades);
            spadeHand.AddCard(CardValues.Jack, Suits.Spades);
            spadeHand.AddCard(CardValues.Ten, Suits.Spades);

            Assert.AreEqual(PokerHandValues.RoyalFlush, heartHand.Value);
            Assert.AreEqual(PokerHandValues.RoyalFlush, clubHand.Value);
            Assert.AreEqual(PokerHandValues.RoyalFlush, diamondHand.Value);
            Assert.AreEqual(PokerHandValues.RoyalFlush, spadeHand.Value);
        }
Exemplo n.º 8
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            // Use this method to confirm the random shuffler produces the expected hand distribution.

            rtbResults.Clear();

            SortedList <PokerHandValues, int> handsDealt = new SortedList <PokerHandValues, int>();

            int handsToDeal = Convert.ToInt32(txtHandsToDeal.Text);

            for (int i = 0; i < handsToDeal; i++)
            {
                Deck deck = Shuffler.GetShuffledDeck();

                PokerHand hand = new PokerHand("");

                for (int j = 0; j < 5; j++)
                {
                    Card card = deck.TakeNextCard();
                    hand.AddCard(card.Value, card.Suit);
                }

                if (!handsDealt.ContainsKey(hand.Value))
                {
                    handsDealt.Add(hand.Value, 0);
                }

                handsDealt[hand.Value]++;
            }

            rtbResults.Clear();

            foreach (KeyValuePair <PokerHandValues, int> keyValuePair in handsDealt)
            {
                rtbResults.Text += string.Format("{0}:\t {1}\t {2}",
                                                 keyValuePair.Key, keyValuePair.Value,
                                                 (Convert.ToDouble(keyValuePair.Value) / Convert.ToDouble(handsToDeal) * 100));
                rtbResults.Text += Environment.NewLine;
            }
        }
Exemplo n.º 9
0
        public void TestStraightFlushIsFound()
        {
            PokerHand kingHighStraightFlush  = new PokerHand("");
            PokerHand queenHighStraightFlush = new PokerHand("");
            PokerHand jackHighStraightFlush  = new PokerHand("");
            PokerHand tenHighStraightFlush   = new PokerHand("");
            PokerHand nineHighStraightFlush  = new PokerHand("");
            PokerHand eightHighStraightFlush = new PokerHand("");
            PokerHand sevenHighStraightFlush = new PokerHand("");
            PokerHand sixHighStraightFlush   = new PokerHand("");
            PokerHand fiveHighStraightFlush  = new PokerHand("");

            kingHighStraightFlush.AddCard(CardValues.King, Suits.Hearts);
            kingHighStraightFlush.AddCard(CardValues.Queen, Suits.Hearts);
            kingHighStraightFlush.AddCard(CardValues.Jack, Suits.Hearts);
            kingHighStraightFlush.AddCard(CardValues.Ten, Suits.Hearts);
            kingHighStraightFlush.AddCard(CardValues.Nine, Suits.Hearts);

            queenHighStraightFlush.AddCard(CardValues.Queen, Suits.Hearts);
            queenHighStraightFlush.AddCard(CardValues.Jack, Suits.Hearts);
            queenHighStraightFlush.AddCard(CardValues.Ten, Suits.Hearts);
            queenHighStraightFlush.AddCard(CardValues.Nine, Suits.Hearts);
            queenHighStraightFlush.AddCard(CardValues.Eight, Suits.Hearts);

            jackHighStraightFlush.AddCard(CardValues.Jack, Suits.Hearts);
            jackHighStraightFlush.AddCard(CardValues.Ten, Suits.Hearts);
            jackHighStraightFlush.AddCard(CardValues.Nine, Suits.Hearts);
            jackHighStraightFlush.AddCard(CardValues.Eight, Suits.Hearts);
            jackHighStraightFlush.AddCard(CardValues.Seven, Suits.Hearts);

            tenHighStraightFlush.AddCard(CardValues.Ten, Suits.Hearts);
            tenHighStraightFlush.AddCard(CardValues.Nine, Suits.Hearts);
            tenHighStraightFlush.AddCard(CardValues.Eight, Suits.Hearts);
            tenHighStraightFlush.AddCard(CardValues.Seven, Suits.Hearts);
            tenHighStraightFlush.AddCard(CardValues.Six, Suits.Hearts);

            nineHighStraightFlush.AddCard(CardValues.Nine, Suits.Hearts);
            nineHighStraightFlush.AddCard(CardValues.Eight, Suits.Hearts);
            nineHighStraightFlush.AddCard(CardValues.Seven, Suits.Hearts);
            nineHighStraightFlush.AddCard(CardValues.Six, Suits.Hearts);
            nineHighStraightFlush.AddCard(CardValues.Five, Suits.Hearts);

            eightHighStraightFlush.AddCard(CardValues.Eight, Suits.Hearts);
            eightHighStraightFlush.AddCard(CardValues.Seven, Suits.Hearts);
            eightHighStraightFlush.AddCard(CardValues.Six, Suits.Hearts);
            eightHighStraightFlush.AddCard(CardValues.Five, Suits.Hearts);
            eightHighStraightFlush.AddCard(CardValues.Four, Suits.Hearts);

            sevenHighStraightFlush.AddCard(CardValues.Seven, Suits.Hearts);
            sevenHighStraightFlush.AddCard(CardValues.Six, Suits.Hearts);
            sevenHighStraightFlush.AddCard(CardValues.Five, Suits.Hearts);
            sevenHighStraightFlush.AddCard(CardValues.Four, Suits.Hearts);
            sevenHighStraightFlush.AddCard(CardValues.Three, Suits.Hearts);

            sixHighStraightFlush.AddCard(CardValues.Six, Suits.Hearts);
            sixHighStraightFlush.AddCard(CardValues.Five, Suits.Hearts);
            sixHighStraightFlush.AddCard(CardValues.Four, Suits.Hearts);
            sixHighStraightFlush.AddCard(CardValues.Three, Suits.Hearts);
            sixHighStraightFlush.AddCard(CardValues.Two, Suits.Hearts);

            fiveHighStraightFlush.AddCard(CardValues.Five, Suits.Hearts);
            fiveHighStraightFlush.AddCard(CardValues.Four, Suits.Hearts);
            fiveHighStraightFlush.AddCard(CardValues.Three, Suits.Hearts);
            fiveHighStraightFlush.AddCard(CardValues.Two, Suits.Hearts);
            fiveHighStraightFlush.AddCard(CardValues.Ace, Suits.Hearts);

            Assert.AreEqual(PokerHandValues.StraightFlush, kingHighStraightFlush.Value);
            Assert.AreEqual(PokerHandValues.StraightFlush, queenHighStraightFlush.Value);
            Assert.AreEqual(PokerHandValues.StraightFlush, jackHighStraightFlush.Value);
            Assert.AreEqual(PokerHandValues.StraightFlush, tenHighStraightFlush.Value);
            Assert.AreEqual(PokerHandValues.StraightFlush, nineHighStraightFlush.Value);
            Assert.AreEqual(PokerHandValues.StraightFlush, eightHighStraightFlush.Value);
            Assert.AreEqual(PokerHandValues.StraightFlush, sevenHighStraightFlush.Value);
            Assert.AreEqual(PokerHandValues.StraightFlush, sixHighStraightFlush.Value);
            Assert.AreEqual(PokerHandValues.StraightFlush, fiveHighStraightFlush.Value);
        }