public void BeginDispatch() { var machine = new TestMachine <State, Event, int>(); machine.AddTransition(State.S1, Event.S1_to_S2, State.S2); IPassiveStateMachine <State, Event, int> m = machine; m.BeginDispatch += (sender, e) => { Assert.AreEqual(State.S1, m.CurrentStateID); Assert.AreEqual(Event.S1_to_S2, e.EventID); Assert.AreEqual(State.S1, e.SourceStateID); Assert.AreEqual(123, e.EventArgs); }; registerMachineEvents(m); machine.Start(State.S1); m.Send(Event.S1_to_S2, 123); m.Execute(); assertMachineEvents(true, false, true, false); Assert.AreEqual(State.S2, machine.CurrentStateID); }
static void Fire(IPassiveStateMachine <State, Trigger, EventArgs> phoneCall, Trigger trigger) { Console.WriteLine("[Firing:] {0}", trigger); phoneCall.Send(trigger); phoneCall.Execute(); }