public void Specifying_an_event_activity() { Event Initialized = null; Event Finish = null; _instance = new Instance(); _machine = AutomatonymousStateMachine <Instance> .New(builder => builder .State("Running", out Running) .Event("Initialized", out Initialized) .Event("Finish", out Finish) .During(builder.Initial) .When(Initialized, b => b.TransitionTo(Running)) .During(Running) .When(Finish, b => b.Finalize()) ); _observer = new StateChangeObserver <Instance>(); using (IDisposable subscription = _machine.ConnectStateObserver(_observer)) { _machine.RaiseEvent(_instance, Initialized).Wait(); _machine.RaiseEvent(_instance, Finish).Wait(); } }
public void Specifying_an_event_activity() { Event Initialized = null; Event LegCramped = null; Event Finish = null; Event Recovered = null; _instance = new Instance(); _machine = AutomatonymousStateMachine <Instance> .New(builder => builder .State("Running", out Running) .Event("Initialized", out Initialized) .Event("LegCramped", out LegCramped) .Event("Finish", out Finish) .Event("Recovered", out Recovered) .SubState("Resting", Running, out Resting) .During(builder.Initial) .When(Initialized, b => b.TransitionTo(Running)) .During(Running) .When(LegCramped, b => b.TransitionTo(Resting)) .When(Finish, b => b.Finalize()) .During(Resting) .When(Recovered, b => b.TransitionTo(Running)) .WhenEnter(Running, b => b.Then(context => { })) .WhenLeave(Running, b => b.Then(context => { })) .BeforeEnter(Running, b => b.Then(context => { })) .AfterLeave(Running, b => b.Then(context => { })) ); _observer = new StateChangeObserver <Instance>(); _eventObserver = new EventRaisedObserver <Instance>(); using (IDisposable subscription = _machine.ConnectStateObserver(_observer)) using (IDisposable beforeEnterSub = _machine.ConnectEventObserver(Running.BeforeEnter, _eventObserver)) using (IDisposable afterLeaveSub = _machine.ConnectEventObserver(Running.AfterLeave, _eventObserver)) { _machine.RaiseEvent(_instance, Initialized).Wait(); _machine.RaiseEvent(_instance, LegCramped).Wait(); _machine.RaiseEvent(_instance, Recovered).Wait(); _machine.RaiseEvent(_instance, Finish).Wait(); } }
public void Specifying_an_event_activity() { _instance = new Instance(); _machine = AutomatonymousStateMachine <Instance> .New(builder => builder .State("Running", out Running) .Event("Initialized", out Event Initialized) .Event("Finish", out Event Finish) .During(builder.Initial) .When(Initialized, b => b.TransitionTo(Running)) .During(Running) .When(Finish, b => b.Finalize()) .WhenEnter(Running, x => x.Then(context => context.Instance.EnterCalled = true)) ); _observer = new StateChangeObserver <Instance>(); using (IDisposable subscription = _machine.ConnectStateObserver(_observer)) { _machine.TransitionToState(_instance, Running) .Wait(); } }