public void SetupTests() { var mocks = new MockRepository(MockBehavior.Loose); playerZero = mocks.Create <Player>(PlayerColor.Blue); var playerList = new List <Player> { playerZero.Object }; bank = mocks.Create <Bank>(); board = mocks.Create <GameBoard>(); var view = mocks.Create <View>(MockBehavior.Loose); presenter = mocks.Create <Presenter>(view.Object); view.Setup(x => x.SetPlayerName(playerZero.Object.Color.ToString())); var model = new GameModel(board.Object, bank.Object, playerList, presenter.Object); var turnState = new MoveRobber(model); var realStates = new HashSet <TurnState> { turnState }; TestUtil.SetupStateDictionary(model, mocks, realStates); board.Setup(b => b.GetHex(It.IsAny <int>())).CallBase(); board.Setup(b => b.PlaceRobber(It.IsAny <int>())).Returns(true).Verifiable(); turnState.ReturnStateType = typeof(Trade); turnState.HandleInput(new PlayerAction(ActionType.Hex, 1)); }
public void WhenItIsTimeForThePlayerTo(Mock <Player> playerMock, string action) { var player = playerMock.Object; TurnState currentState; var model = context.Get <GameModel>(); model.ActivePlayer = player; switch (action.Trim()) { case "build": currentState = new Build(model); break; case "place a city": currentState = new WaitCity(model); break; case "place a settlement": currentState = new WaitSettlement(model); break; case "place a road": currentState = new WaitRoad(model); break; case "roll the dice": currentState = new WaitRollDice(model); break; case "trade": currentState = new Trade(model); break; case "doTrade": currentState = new DoTrade(model); break; case "rob people": currentState = new MoveRobber(model) { ReturnStateType = typeof(Trade) }; break; case "steal a resource": var rob = new Rob(model) { ReturnStateType = typeof(Trade) }; rob.SetSelectedHex(2); currentState = rob; break; default: throw new ArgumentException("Unhandled case"); } currentState.OnEnter(); context["CurrentState"] = currentState; if (context.TryGetValue(out TurnManager manager)) { manager.CurrentState = currentState; } }