Exemple #1
0
        public void StateMachine_SwitchState_AsksForTransitionAllowed()
        {
            // Arrange
            var player1      = new Player(new PlayerActions(), new PlayerResources(3, 0));
            var stateMachine = new TurnStateMachine(new WaitingForTurnState());
            var nextState    = new ResolvingBattleState();

            // Act & Assert
            Assert.Throws <InvalidOperationException>(() => stateMachine.SwitchState(nextState));
        }
Exemple #2
0
        public void StateMachine_SwitchState_ExecutesStateLeavingBehavior()
        {
            // Arrange
            var player1      = new Player(new PlayerActions(), new PlayerResources(3, 0));
            var stateMachine = new TurnStateMachine(new WaitingForTurnState());
            var nextState    = new RestoringResourcesState(player1.PlayerResources);
            var nextState2   = new PlayingCardsPhase(player1.PlayerActions);
            var nextState3   = new ResolvingBattleState();

            // Act & Assert
            Assert.That(player1.PlayerActions.CanPlayActions, Is.EqualTo(false));
            stateMachine.SwitchState(nextState);
            stateMachine.SwitchState(nextState2);
            Assert.That(player1.PlayerActions.CanPlayActions, Is.EqualTo(true));
            stateMachine.SwitchState(nextState3);
            Assert.That(player1.PlayerActions.CanPlayActions, Is.EqualTo(false));
        }