Exemplo n.º 1
0
        public void PlayerRollsDoublesLandsOnGoToJailDoesNotGoAgain()
        {
            var mockDice = new Mock <IDice>();

            mockDice.Setup(d => d.RollResults).Returns(4);
            mockDice.Setup(d => d.Doubles).Returns(true);

            var board        = new Board(banker, mockDice.Object);
            var turnHandler  = new TurnHandler(board, banker, mockDice.Object);
            var roundHandler = new RoundHandler(turnHandler);
            var testGame     = new Game(banker, roundHandler);

            var playerCar = testGame.CreatePlayerAccount("Car");

            playerCar.Location = 26;
            var cashBeforeTurn = banker.GetPlayerBalance(playerCar);

            turnHandler = new TurnHandler(board, banker, mockDice.Object);
            List <TurnEventArgs> playerTurns = new List <TurnEventArgs>();

            turnHandler.TurnFinished += (s, e) => { if (e.Player.Equals(playerCar))
                                                    {
                                                        playerTurns.Add(e);
                                                    }
            };

            turnHandler.TakeTurn(playerCar, 0, 0);

            var jailLocation = 10;

            Assert.AreEqual(0, playerTurns[0].GoAgainCount);
            Assert.AreEqual(jailLocation, playerCar.Location);
            Assert.IsTrue(playerCar.InJail);
            Assert.AreEqual(0, cashBeforeTurn - banker.GetPlayerBalance(playerCar));
        }
Exemplo n.º 2
0
        public void PlayerInJailRollsDoublesToGetOut()
        {
            var mockDice = new Mock <IDice>();

            mockDice.Setup(d => d.RollResults).Returns(4);
            mockDice.Setup(d => d.Doubles).Returns(true);

            var board        = new Board(banker, mockDice.Object);
            var turnHandler  = new TurnHandler(board, banker, mockDice.Object);
            var roundHandler = new RoundHandler(turnHandler);
            var testGame     = new Game(banker, roundHandler);

            var playerCar = testGame.CreatePlayerAccount("Car");

            board.SendPlayerToJail(playerCar);

            List <TurnEventArgs> playerTurns = new List <TurnEventArgs>();

            turnHandler = new TurnHandler(board, banker, mockDice.Object);
            turnHandler.TurnFinished += (s, e) => { if (e.Player.Equals(playerCar))
                                                    {
                                                        playerTurns.Add(e);
                                                    }
            };

            var cashBeforeTurn = banker.GetPlayerBalance(playerCar);

            turnHandler.TakeTurn(playerCar, 0, 0);

            Assert.AreEqual(14, playerCar.Location);
            Assert.IsFalse(playerCar.InJail);
            Assert.AreEqual(0 + 160, cashBeforeTurn - banker.GetPlayerBalance(playerCar));
        }
Exemplo n.º 3
0
        public void PlayerContinuoslyRollsDoubles_EndsUpInJail()
        {
            var mockDice = new Mock <IDice>();

            mockDice.Setup(d => d.RollResults).Returns(4);
            mockDice.Setup(d => d.Doubles).Returns(true);

            var board        = new Board(banker, mockDice.Object);
            var turnHandler  = new TurnHandler(board, banker, mockDice.Object);
            var roundHandler = new RoundHandler(turnHandler);
            var testGame     = new Game(banker, roundHandler);

            var playerCar   = testGame.CreatePlayerAccount("Car");
            var playerHorse = testGame.CreatePlayerAccount("Horse");
            var playerIron  = testGame.CreatePlayerAccount("Iron");

            List <TurnEventArgs> playerTurns = new List <TurnEventArgs>();

            turnHandler = new TurnHandler(board, banker, mockDice.Object);
            turnHandler.TurnFinished += (s, e) => { if (e.Player.Equals(playerCar))
                                                    {
                                                        playerTurns.Add(e);
                                                    }
            };

            turnHandler.TakeTurn(playerCar, 0, 0);

            var jailLocation = 10;

            Assert.AreEqual(3, playerTurns[0].GoAgainCount);
            Assert.AreEqual(jailLocation, playerCar.Location);
            Assert.IsTrue(playerCar.InJail);
        }
Exemplo n.º 4
0
        public void PlayerSpendsThreeTurnsInJailPays50ToGetOut()
        {
            var mockDice = new Mock <IDice>();

            mockDice.Setup(d => d.RollResults).Returns(3);
            mockDice.Setup(d => d.Doubles).Returns(false);

            var board        = new Board(banker, mockDice.Object);
            var turnHandler  = new TurnHandler(board, banker, mockDice.Object);
            var roundHandler = new RoundHandler(turnHandler);
            var testGame     = new Game(banker, roundHandler);


            var playerCar = testGame.CreatePlayerAccount("Car");

            board.SendPlayerToJail(playerCar);

            turnHandler = new TurnHandler(board, banker, mockDice.Object);
            List <TurnEventArgs> playerTurns = new List <TurnEventArgs>();

            turnHandler.TurnFinished += (s, e) => { if (e.Player.Equals(playerCar))
                                                    {
                                                        playerTurns.Add(e);
                                                    }
            };

            var jailLocation = 10;

            turnHandler.TakeTurn(playerCar, 0, 0);
            Assert.AreEqual(jailLocation, playerCar.Location);
            Assert.IsTrue(playerCar.InJail);
            Assert.AreEqual(1500, banker.GetPlayerBalance(playerCar));

            turnHandler.TakeTurn(playerCar, 1, 0);
            Assert.AreEqual(jailLocation, playerCar.Location);
            Assert.IsTrue(playerCar.InJail);
            Assert.AreEqual(1500, banker.GetPlayerBalance(playerCar));

            var cashBeforeTurn = banker.GetPlayerBalance(playerCar);
            var costSpace13    = 140;

            turnHandler.TakeTurn(playerCar, 2, 0);
            Assert.AreEqual(13, playerCar.Location);
            Assert.IsFalse(playerCar.InJail);
            Assert.AreEqual(costSpace13 + 50, cashBeforeTurn - banker.GetPlayerBalance(playerCar));
        }