Ejemplo n.º 1
0
        public void TestAnyTransitionEvents()
        {
            int   event1Count = 0;
            State?event1From  = null;
            State?event1To    = null;

            FiniteStateMachine <State> fsm = new FiniteStateMachine <State>();

            fsm.AddTransition(State.A, State.B);
            fsm.AddTransition(State.B, State.C);
            fsm.AddEventOnAnyTransition((from, to) => {
                event1From = from;
                event1To   = to;
                event1Count++;
            });
            fsm.Start(State.A);

            Assert.IsTrue(event1Count == 0);
            fsm.TransitionTo(State.B);
            Assert.IsTrue(event1Count == 1);
            Assert.IsTrue(event1From == State.A);
            Assert.IsTrue(event1To == State.B);

            fsm.TransitionTo(State.C);
            Assert.IsTrue(event1Count == 2);
            Assert.IsTrue(event1From == State.B);
            Assert.IsTrue(event1To == State.C);
        }