public void PairSplittingLessThanTest()
        {
            PlayerState      expectedState = PlayerState.Split;
            TenCountStrategy player        = new TenCountStrategy
            {
                Chips = 500,
                hand  = new Hand
                {
                    cards = new List <Card>()
                    {
                        new Card(Suit.Club, Face.Nine),
                        new Card(Suit.Diamond, Face.Nine)
                    }
                },
                Count = new List <int>()
                {
                    410, 100
                }                                    //Count = 1.6
            };

            player.UpdateOthersOverTenRatio();
            player.hand.SetHandValues();
            PlayerState state = (player.React(dealersUpCard: new Card(Suit.Spade, Face.Nine), ref player.CurrentState, player.hand, new List <int>()));

            Assert.AreEqual(expectedState, state);
        }
        public void HardDoublingEqualToTest()
        {
            PlayerState      expectedState = PlayerState.DoubleDown;
            TenCountStrategy player        = new TenCountStrategy
            {
                Chips = 500,
                hand  = new Hand
                {
                    cards = new List <Card>()
                    {
                        new Card(Suit.Club, Face.Three),
                        new Card(Suit.Club, Face.Six)
                    }
                },
                Count = new List <int>()
                {
                    160, 100
                }                                    //Count = 1.6
            };

            player.UpdateOthersOverTenRatio();
            player.hand.SetHandValues();
            PlayerState state = (player.React(dealersUpCard: new Card(Suit.Club, Face.Eight), ref player.CurrentState, player.hand, new List <int>()));

            Assert.AreEqual(expectedState, state);
        }
        public void CountTest()
        {
            int         expectedCount   = 13;
            Player      player          = new TenCountStrategy();
            Deck        deck            = new Deck(52);
            List <Card> burntCards      = new List <Card>();
            List <Card> deckToCardsList = deck.Cards.ToList();

            burntCards.Add(new Card(Suit.Club, Face.King));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Club && x.Face == Face.King);
            burntCards.Add(new Card(Suit.Club, Face.Ten));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Club && x.Face == Face.Ten);
            burntCards.Add(new Card(Suit.Club, Face.Queen));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Club && x.Face == Face.Queen);
            burntCards.Add(new Card(Suit.Club, Face.Nine));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Club && x.Face == Face.Nine);
            burntCards.Add(new Card(Suit.Club, Face.Five));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Club && x.Face == Face.Five);
            burntCards.Add(new Card(Suit.Club, Face.Ace));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Club && x.Face == Face.Ace);

            deck.Cards.Clear();
            foreach (var card in deckToCardsList)
            {
                deck.Cards.Push(card);
            }

            player.hand.SetHandValues();
            int count = player.UpdateCount(deck, burntCards, null).Last();

            Assert.AreEqual(expectedCount, count);
        }
        //(A,4) against 3 with a count of 2 //Should not double down if count > 1.9
        public void SoftDoublingGreaterThanTest()
        {
            PlayerState      expectedState = PlayerState.DoubleDown;
            TenCountStrategy player        = new TenCountStrategy
            {
                Chips = 500,
                hand  = new Hand
                {
                    cards = new List <Card>()
                    {
                        new Card(Suit.Club, Face.Ace),
                        new Card(Suit.Club, Face.Four)
                    }
                },
                Count = new List <int>()
                {
                    200, 100
                }
            };

            player.UpdateOthersOverTenRatio();
            player.hand.SetHandValues();
            PlayerState state = (player.React(dealersUpCard: new Card(Suit.Club, Face.Three), ref player.CurrentState, player.hand, new List <int>()));

            Assert.AreNotEqual(expectedState, state);
        }
        public void BetMaxTest()
        {
            int         expectedBet     = 100;
            Player      player          = new TenCountStrategy();
            Deck        deck            = new Deck(52);
            List <Card> burntCards      = new List <Card>();
            List <Card> deckToCardsList = deck.Cards.ToList();

            burntCards.Add(new Card(Suit.Club, Face.Two));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Club && x.Face == Face.Two);
            burntCards.Add(new Card(Suit.Spade, Face.Two));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Spade && x.Face == Face.Two);
            burntCards.Add(new Card(Suit.Club, Face.Three));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Club && x.Face == Face.Three);
            burntCards.Add(new Card(Suit.Spade, Face.Three));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Spade && x.Face == Face.Three);
            burntCards.Add(new Card(Suit.Club, Face.Four));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Club && x.Face == Face.Four);
            burntCards.Add(new Card(Suit.Spade, Face.Four));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Spade && x.Face == Face.Four);
            burntCards.Add(new Card(Suit.Club, Face.Five));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Club && x.Face == Face.Five);
            burntCards.Add(new Card(Suit.Spade, Face.Five));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Spade && x.Face == Face.Five);
            burntCards.Add(new Card(Suit.Club, Face.Six));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Club && x.Face == Face.Six);
            burntCards.Add(new Card(Suit.Spade, Face.Six));
            deckToCardsList.RemoveAll(x => x.Suit == Suit.Spade && x.Face == Face.Six);


            deck.Cards.Clear();
            foreach (var card in deckToCardsList)
            {
                deck.Cards.Push(card);
            }

            player.hand.SetHandValues();
            player.UpdateCount(deck, burntCards, null).First();
            int bet = player.CalculateBet(10, 100);

            Assert.AreEqual(expectedBet, bet);
        }