public void Should_include_all_the_state_events() { _workflow = StateMachineWorkflow.New <MyActorWorkflow, MyActor>(x => { x.AccessCurrentState(i => i.CurrentState); x.Initially() .When(w => w.Start) .TransitionTo(y => y.Running) .When(y => y.Stop) .TransitionTo(y => y.Stopped); x.During(y => y.Running) .When(y => y.AReceived) .Then(i => i.OnA) .When(y => y.BReceived) .Then(i => i.OnB) .When(y => y.Stop) .TransitionTo(y => y.Stopped); x.During(y => y.Stopped) .When(y => y.Start) .TransitionTo(y => y.Running) .When(y => y.OnExit) .Finalize(); }); _visitor = new StateMachineWorkflowEventVisitor <MyActorWorkflow, MyActor>(); _workflow.Accept(_visitor); }
public void Should_include_all_the_state_events() { _workflow = StateMachineWorkflow.New<MyActorWorkflow, MyActor>(x => { x.AccessCurrentState(i => i.CurrentState); x.Initially() .When(w => w.Start) .TransitionTo(y => y.Running) .When(y => y.Stop) .TransitionTo(y => y.Stopped); x.During(y => y.Running) .When(y => y.AReceived) .Then(i => i.OnA) .When(y => y.BReceived) .Then(i => i.OnB) .When(y => y.Stop) .TransitionTo(y => y.Stopped); x.During(y => y.Stopped) .When(y => y.Start) .TransitionTo(y => y.Running) .When(y => y.OnExit) .Finalize(); }); _visitor = new StateMachineWorkflowEventVisitor<MyActorWorkflow, MyActor>(); _workflow.Accept(_visitor); }
static IDictionary <Event, StateMachineWorkflowEventBinder <TActor> > BuildStateEventBinders( StateMachineWorkflow <TWorkflow, TActor> workflow) { var visitor = new StateMachineWorkflowEventVisitor <TWorkflow, TActor>(); workflow.Accept(visitor); return(visitor.GetBinders().ToDictionary(x => x.Event)); }