public void TestCardCombo()
        {
            PokerPlayer pl1    = new FakePokerPlayer();
            PokerPlayer pl2    = new FakePokerPlayer();
            ICardDealer dealer = new DefaultCardDealer();

            dealer.ShuffleAndDealDeck(pl1, pl2);
            List <OrderedCardSet> p1PossHands = HoldemHand.GetOpponentCombinationOfHandCards(dealer.FullDeck, pl2.HandCards, dealer.CommunityCards);
            List <OrderedCardSet> p2PossHands = HoldemHand.GetOpponentCombinationOfHandCards(dealer.FullDeck, pl1.HandCards, dealer.CommunityCards);

            List <PlayingCard> totalCards = new List <PlayingCard>();

            totalCards.AddRange(pl1.HandCards);
            totalCards.AddRange(dealer.CommunityCards);
            Assert.AreEqual(7, totalCards.Count);

            int len   = 7;
            int count = 0;

            for (int t1 = 0; t1 < len; t1 += 1)
            {
                for (int t2 = t1 + 1; t2 < len; t2 += 1)
                {
                    for (int t3 = t2 + 1; t3 < len; t3 += 1)
                    {
                        for (int t4 = t3 + 1; t4 < len; t4 += 1)
                        {
                            for (int t5 = t4 + 1; t5 < len; t5 += 1)
                            {
                                count += 1;
                            }
                        }
                    }
                }
            }

            Assert.AreEqual(21, count);

            List <OrderedCardSet> p1PokerHands = HoldemHand.GetCombinationOfPokerHands(pl1.HandCards, dealer.CommunityCards);
            List <OrderedCardSet> p2PokerHands = HoldemHand.GetCombinationOfPokerHands(pl2.HandCards, dealer.CommunityCards);

            Assert.AreEqual(990, p1PossHands.Count);
            Assert.AreEqual(990, p2PossHands.Count);
            Assert.AreEqual(21, p1PokerHands.Count);
            Assert.AreEqual(21, p2PokerHands.Count);

            pl1.Hand = HoldemHand.ChooseBestHand(pl1.HandCards, dealer.CommunityCards);
            pl2.Hand = HoldemHand.ChooseBestHand(pl2.HandCards, dealer.CommunityCards);

            //  OrderedCardSet set = CardChances.GetOtherCards(dealer.FullDeck, pl2.HandCards, dealer.CommunityCards);

            HoldemHand.HandPlayResult result = HoldemHand.TestHandChances(pl1.Hand, pl1.HandCards, dealer);

            Assert.AreEqual(990, result.Wins + result.Losses + result.Ties);
        }
        public void TestCardDealer()
        {
            PokerPlayer pl1    = new FakePokerPlayer();
            PokerPlayer pl2    = new FakePokerPlayer();
            ICardDealer dealer = new DefaultCardDealer();

            dealer.ShuffleAndDealDeck(pl1, pl2);


            Assert.AreEqual(52, dealer.FullDeck.Count);
            Assert.AreEqual(43, dealer.RemainingDeck.Count);
            Assert.AreEqual(5, dealer.CommunityCards.Count);
            Assert.AreEqual(2, pl1.HandCards.Count);
            Assert.AreEqual(2, pl2.HandCards.Count);
        }