Esempio n. 1
0
        public void BlackjackBetTransactionTest()
        {
            // arrange
            decimal       startingChips    = 100;
            decimal       alexBetAmount    = 5;
            decimal       billBetAmount    = 6;
            decimal       charlieBetAmount = 7;
            List <Player> players          = new List <Player>();
            Player        alex             = new Player(startingChips)
            {
                Name = "Alex"
            };
            Player bill = new Player(startingChips)
            {
                Name = "Bill"
            };
            Player charlie = new Player(startingChips)
            {
                Name = "Charlie"
            };

            players.Add(alex);
            players.Add(bill);
            players.Add(charlie);
            var bet1 = new BlackjackBet(alex, alexBetAmount, Pot.Instance);
            var bet2 = new BlackjackBet(bill, billBetAmount, Pot.Instance);
            var bet3 = new BlackjackBet(charlie, charlieBetAmount, Pot.Instance);

            // act
            bet1.Execute();
            bet2.Execute();
            bet3.Execute();

            // assert
            Assert.AreEqual <decimal>(Pot.Instance.Chips, alexBetAmount + billBetAmount + charlieBetAmount);
            Assert.AreEqual <decimal>(alex.Bettor.Chips, startingChips - alexBetAmount);
            Assert.AreEqual <decimal>(alex.Bettor.Chips, bet1.Bettor.Chips);
            Assert.AreEqual <decimal>(bill.Bettor.Chips, startingChips - billBetAmount);
            Assert.AreEqual <decimal>(bill.Bettor.Chips, bet2.Bettor.Chips);
            Assert.AreEqual <decimal>(charlie.Bettor.Chips, startingChips - charlieBetAmount);
            Assert.AreEqual <decimal>(charlie.Bettor.Chips, bet3.Bettor.Chips);

            // simulate three winner splitting the pot

            // act
            Pot.Instance.TakePot(players.Select(p => p.Bettor).ToList());

            // assert
            decimal potAmount = alexBetAmount + billBetAmount + charlieBetAmount;

            Assert.AreEqual <decimal>(alex.Bettor.Chips, startingChips - alexBetAmount + (potAmount / 3.0M));
            Assert.AreEqual <decimal>(bill.Bettor.Chips, startingChips - billBetAmount + (potAmount / 3.0M));
            Assert.AreEqual <decimal>(charlie.Bettor.Chips, startingChips - charlieBetAmount + (potAmount / 3.0M));
            Assert.AreEqual <decimal>(Pot.Instance.Chips, 0);
        }
        public void BlackjackBetTransactionTest()
        {
            // arrange
            decimal startingChips = 100;
            decimal alexBetAmount = 5;
            decimal billBetAmount = 6;
            decimal charlieBetAmount = 7;
            List<Player> players = new List<Player>();
            Player alex = new Player(startingChips) { Name = "Alex" };
            Player bill = new Player(startingChips) { Name = "Bill" };
            Player charlie = new Player(startingChips) { Name = "Charlie" };

            players.Add(alex);
            players.Add(bill);
            players.Add(charlie);
            var bet1 = new BlackjackBet(alex, alexBetAmount, Pot.Instance);
            var bet2 = new BlackjackBet(bill, billBetAmount, Pot.Instance);
            var bet3 = new BlackjackBet(charlie, charlieBetAmount, Pot.Instance);

            // act
            bet1.Execute();
            bet2.Execute();
            bet3.Execute();

            // assert
            Assert.AreEqual<decimal>(Pot.Instance.Chips, alexBetAmount + billBetAmount + charlieBetAmount);
            Assert.AreEqual<decimal>(alex.Bettor.Chips, startingChips - alexBetAmount);
            Assert.AreEqual<decimal>(alex.Bettor.Chips, bet1.Bettor.Chips);
            Assert.AreEqual<decimal>(bill.Bettor.Chips, startingChips - billBetAmount);
            Assert.AreEqual<decimal>(bill.Bettor.Chips, bet2.Bettor.Chips);
            Assert.AreEqual<decimal>(charlie.Bettor.Chips, startingChips - charlieBetAmount);
            Assert.AreEqual<decimal>(charlie.Bettor.Chips, bet3.Bettor.Chips);

            // simulate three winner splitting the pot

            // act
            Pot.Instance.TakePot(players.Select(p => p.Bettor).ToList());

            // assert
            decimal potAmount = alexBetAmount + billBetAmount + charlieBetAmount;
            Assert.AreEqual<decimal>(alex.Bettor.Chips, startingChips - alexBetAmount + (potAmount / 3.0M));
            Assert.AreEqual<decimal>(bill.Bettor.Chips, startingChips - billBetAmount + (potAmount / 3.0M));
            Assert.AreEqual<decimal>(charlie.Bettor.Chips, startingChips - charlieBetAmount + (potAmount / 3.0M));
            Assert.AreEqual<decimal>(Pot.Instance.Chips, 0);
        }