Example #1
0
        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));
        }
Example #2
0
        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;
            }
        }