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)); }
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)); }
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); }
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)); }