本文整理汇总了C#中StateMachine.Configure方法的典型用法代码示例。如果您正苦于以下问题:C# StateMachine.Configure方法的具体用法?C# StateMachine.Configure怎么用?C# StateMachine.Configure使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StateMachine
的用法示例。
在下文中一共展示了StateMachine.Configure方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: StayInSameStateTwoStates_Transition
public void StayInSameStateTwoStates_Transition()
{
var sm = new StateMachine<State, Trigger>(State.A);
sm.Configure(State.A)
.InternalTransition(Trigger.X, (t) => { })
.Permit(Trigger.Y, State.B);
sm.Configure(State.B)
.InternalTransition(Trigger.X, (t) => { })
.Permit(Trigger.Y, State.A);
// This should not cause any state changes
Assert.AreEqual(State.A, sm.State);
sm.Fire(Trigger.X);
Assert.AreEqual(State.A, sm.State);
// Change state to B
sm.Fire(Trigger.Y);
// This should also not cause any state changes
Assert.AreEqual(State.B, sm.State);
sm.Fire(Trigger.X);
Assert.AreEqual(State.B, sm.State);
}
示例2: UserSecurity
static UserSecurity()
{
_fsm = new StateMachine<UserState, UserSecurityCommand>();
_fsm.Configure(UserState.Initial)
.Permit(UserSecurityCommand.CreateUserSecurity, UserState.Initial);
_fsm.Configure(UserState.Inactive)
.Permit(UserSecurityCommand.CreateUserSecurity, UserState.Inactive)
.Permit(UserSecurityCommand.VerifyPassword, UserState.Inactive)
.Permit(UserSecurityCommand.RequestActivateToken, UserState.Inactive)
.Permit(UserSecurityCommand.ResetActivateToken, UserState.Normal)
.Permit(UserSecurityCommand.ChangePassword, UserState.Inactive)
.Permit(UserSecurityCommand.Destory, UserState.Destroyed);
_fsm.Configure(UserState.Normal)
.Permit(UserSecurityCommand.VerifyPassword, UserState.Normal)
.Permit(UserSecurityCommand.RequestResetPasswordToken, UserState.Normal)
.Permit(UserSecurityCommand.VerifyResetPasswordToken, UserState.Normal)
.Permit(UserSecurityCommand.CancelResetPasswordToken, UserState.Normal)
.Permit(UserSecurityCommand.ResetPassword, UserState.Normal)
.Permit(UserSecurityCommand.ChangePassword, UserState.Normal)
.Permit(UserSecurityCommand.Block, UserState.Blocked)
.Permit(UserSecurityCommand.Destory, UserState.Destroyed);
_fsm.Configure(UserState.Blocked)
.Permit(UserSecurityCommand.Destory, UserState.Destroyed)
.Permit(UserSecurityCommand.Restore, UserState.Normal);
}
示例3: User
static User()
{
_fsm = new StateMachine<UserState, UserCommand>();
_fsm.Configure(UserState.Initial)
.Permit(UserCommand.CreateUser, UserState.Inactive);
_fsm.Configure(UserState.Inactive)
.Permit(UserCommand.ActivateUser, UserState.Normal)
.Permit(UserCommand.ChangeProfile, UserState.Inactive);
_fsm.Configure(UserState.Normal)
.Permit(UserCommand.ChangeProfile, UserState.Normal);
}
示例4: Given
public void Given()
{
_stateMachine = new StateMachine<State, Trigger>(State.B);
_stateMachine.Configure(State.B).Permit(Trigger.X, State.C);
// sanity check:
Assert.That(_stateMachine.IsInState(State.B));
}
示例5: DestinationStateIsDynamic
public void DestinationStateIsDynamic()
{
var sm = new StateMachine<State, Trigger>(State.A);
sm.Configure(State.A)
.PermitDynamic(Trigger.X, () => State.B);
sm.Fire(Trigger.X);
Assert.AreEqual(State.B, sm.State);
}
示例6: StayInSameStateOneState_Transition
public void StayInSameStateOneState_Transition()
{
var sm = new StateMachine<State, Trigger>(State.A);
sm.Configure(State.A)
.InternalTransition(Trigger.X, (t) => { });
Assert.AreEqual(State.A, sm.State);
sm.Fire(Trigger.X);
Assert.AreEqual(State.A, sm.State);
}
示例7: DestinationStateIsCalculatedBasedOnTriggerParameters
public void DestinationStateIsCalculatedBasedOnTriggerParameters()
{
var sm = new StateMachine<State, Trigger>(State.A);
var trigger = sm.SetTriggerParameters<int>(Trigger.X);
sm.Configure(State.A)
.PermitDynamic(trigger, i => i == 1 ? State.B : State.C);
sm.Fire(trigger, 1);
Assert.AreEqual(State.B, sm.State);
}
示例8: DestinationStateIsDynamic
public void DestinationStateIsDynamic()
{
var expected = "digraph {" + System.Environment.NewLine
+ " { node [label=\"?\"] unknownDestination_0 };" + System.Environment.NewLine
+ " A -> unknownDestination_0 [label=\"X\"];" + System.Environment.NewLine
+ "}";
var sm = new StateMachine<State, Trigger>(State.A);
sm.Configure(State.A)
.PermitDynamic(Trigger.X, () => State.B);
Assert.AreEqual(expected, sm.ToDotGraph());
}
示例9: Start
void Start()
{
var topMenuState = new TopMenuState(transform.FindChild("TopMenuUI").gameObject, textures, fontProperties);
var statusState = new StatusState(transform.FindChild("StatusUI").gameObject, textures, fontProperties);
stateMachine = new StateMachine<State<MainMenuTrigger>, MainMenuTrigger>(topMenuState);
stateMachine
.Configure(topMenuState)
.OnEntry(trans => topMenuState.OnEnter())
.OnExit(trans => topMenuState.OnExit())
.Permit(MainMenuTrigger.StatusSelected, statusState)
.Ignore(MainMenuTrigger.MenuExited);
stateMachine
.Configure(statusState)
.OnEntry(trans => statusState.OnEnter())
.OnExit(trans => statusState.OnExit())
.Permit(MainMenuTrigger.ActionCanceled, topMenuState);
topMenuState.OnEnter();
}
示例10: SimpleTransition
public void SimpleTransition()
{
var expected = "digraph {" + System.Environment.NewLine
+ " A -> B [label=\"X\"];" + System.Environment.NewLine
+ "}";
var sm = new StateMachine<State, Trigger>(State.A);
sm.Configure(State.A)
.Permit(Trigger.X, State.B);
Assert.AreEqual(expected, sm.ToDotGraph());
}
示例11: OnExitWithAnonymousActionAndDescription
public void OnExitWithAnonymousActionAndDescription()
{
var expected = "digraph {" + System.Environment.NewLine
+ "node [shape=box];" + System.Environment.NewLine
+ " A -> \"exitA\" [label=\"On Exit\" style=dotted];" + System.Environment.NewLine
+ "}";
var sm = new StateMachine<State, Trigger>(State.A);
sm.Configure(State.A)
.OnExit(() => { }, "exitA");
Assert.AreEqual(expected, sm.ToDotGraph());
}
示例12: DestinationStateIsCalculatedBasedOnTriggerParameters
public void DestinationStateIsCalculatedBasedOnTriggerParameters()
{
var expected = "digraph {" + System.Environment.NewLine
+ " { node [label=\"?\"] unknownDestination_0 };" + System.Environment.NewLine
+ " A -> unknownDestination_0 [label=\"X\"];" + System.Environment.NewLine
+ "}";
var sm = new StateMachine<State, Trigger>(State.A);
var trigger = sm.SetTriggerParameters<int>(Trigger.X);
sm.Configure(State.A)
.PermitDynamic(trigger, i => i == 1 ? State.B : State.C);
Assert.AreEqual(expected, sm.ToDotGraph());
}
示例13: OnEntryWithNamedDelegateActionAndDescription
public void OnEntryWithNamedDelegateActionAndDescription()
{
var expected = "digraph {" + System.Environment.NewLine
+ "node [shape=box];" + System.Environment.NewLine
+ " A -> \"enteredA\" [label=\"On Entry\" style=dotted];" + System.Environment.NewLine
+ "}";
var sm = new StateMachine<State, Trigger>(State.A);
sm.Configure(State.A)
.OnEntry(OnEntry, "enteredA");
Assert.AreEqual(expected, sm.ToDotGraph());
}
示例14: WhenDiscriminatedByAnonymousGuard
public void WhenDiscriminatedByAnonymousGuard()
{
Func<bool> anonymousGuard = () => true;
var expected = "digraph {" + System.Environment.NewLine
+ " A -> B [label=\"X ["+ anonymousGuard.Method.Name +"]\"];" + System.Environment.NewLine
+ "}";
var sm = new StateMachine<State, Trigger>(State.A);
sm.Configure(State.A)
.PermitIf(Trigger.X, State.B, anonymousGuard);
Assert.AreEqual(expected, sm.ToDotGraph());
}
示例15: StayInSameSubStateTransitionInSubstate_Action
public void StayInSameSubStateTransitionInSubstate_Action()
{
var sm = new StateMachine<State, Trigger>(State.B);
sm.Configure(State.A);
sm.Configure(State.B)
.SubstateOf(State.A)
.InternalTransition(Trigger.X, () => { })
.InternalTransition(Trigger.Y, () => { });
// This should not cause any state changes
Assert.AreEqual(State.B, sm.State);
sm.Fire(Trigger.X);
Assert.AreEqual(State.B, sm.State);
sm.Fire(Trigger.Y);
Assert.AreEqual(State.B, sm.State);
}