Exemplo n.º 1
0
 public State(string nam, int pri, StateTransitionAction ent, StateUpdateAction upd, StateTransitionAction ext)
 {
     name         = nam;
     enterAction  = ent;
     updateAction = upd;
     exitAction   = ext;
     priority     = pri;
 }
Exemplo n.º 2
0
 /// <summary>
 ///     Constructor
 /// </summary>
 /// <param name="currentState">Current state.</param>
 /// <param name="stateMachineEvent">State machine event.</param>
 /// <param name="guard">Transition guard.</param>
 /// <param name="newState">New state.</param>
 /// <param name="action">Action.</param>
 public StateTransition(StateType currentState, EventType stateMachineEvent, StateTransitionGuard guard, StateType newState, StateTransitionAction action)
 {
     CurrentState = currentState;
     Event        = stateMachineEvent;
     Guard        = guard;
     NewState     = newState;
     Action       = action;
 }
Exemplo n.º 3
0
    /// <summary>
    ///     registers a state transition action. fired when state changes from the 'from' enumeration to the 'to' enumeration.
    /// </summary>
    /// <param name="to"></param>
    /// <param name="from"></param>
    /// <param name="stateTransitionAction"></param>
    public void RegisterStateTransitionAction(TEnum to, TEnum from, StateTransitionAction stateTransitionAction)
    {
        Tuple <TEnum, TEnum> toFromTuple = new Tuple <TEnum, TEnum>(to, from);

        if (this.StateTransitionEvents.ContainsKey(toFromTuple))
        {
            this.StateTransitionEvents[toFromTuple] += stateTransitionAction;
        }
        else
        {
            this.StateTransitionEvents.Add(toFromTuple, stateTransitionAction);
        }
    }
Exemplo n.º 4
0
        public void Test_State_Transition_Action_Gets_Exectued()
        {
            var actionHasBeenExecuted = false;
            var transitionAciton      = new StateTransitionAction(() =>
            {
                actionHasBeenExecuted = true;
            });

            var stateMachine = new StateMachine <MachineState, MachineEvent>(MachineState.Off);

            stateMachine.AddTransition(MachineState.Off, MachineEvent.Start, () => { return(true); }, MachineState.Idle, transitionAciton);
            stateMachine.AddTransition(MachineState.Off, MachineEvent.Honk, () => { return(true); }, MachineState.Idle, () => { });

            stateMachine.HandleEvent(MachineEvent.Start);

            Assert.IsTrue(actionHasBeenExecuted);
            Assert.AreEqual(MachineState.Idle, stateMachine.CurrentState);
        }
Exemplo n.º 5
0
 public StateTransition(ChainedContextState start, ChainedContextState stop, StateTransitionEvent allowedEvents, StateTransitionAction action)
 {
     this.Start         = start;
     this.Stop          = stop;
     this.AllowedEvents = allowedEvents;
     this.Action        = action;
 }
Exemplo n.º 6
0
 /// <summary>
 ///     Creates new instance of state change transition
 /// </summary>
 /// <param name="startState">Start state</param>
 /// <param name="transitionEvent">Event</param>
 /// <param name="guard">Transition guard</param>
 /// <param name="endState">End state</param>
 /// <param name="transitionAction">Transition Action</param>
 public void AddTransition(StateType startState, EventType transitionEvent, StateTransitionGuard guard, StateType endState, StateTransitionAction transitionAction)
 {
     AddTransition(new StateTransition <StateType, EventType>(startState, transitionEvent, guard, endState, transitionAction));
 }