コード例 #1
0
        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);
        }
コード例 #2
0
 static void Fire(IPassiveStateMachine <State, Trigger, EventArgs> phoneCall, Trigger trigger)
 {
     Console.WriteLine("[Firing:] {0}", trigger);
     phoneCall.Send(trigger);
     phoneCall.Execute();
 }