public void TestStateCallbacks() { List <string> CallbackNames = new List <string> { "OnExecute", "OnEnter", "OnUpdate", "OnExit" }; FSM fsm = new FSM(); TestState state1 = new TestState(fsm); state1.SetJob(new UpdateForNthTime(2)); TestState state2 = new TestState(fsm); var connection = state1.ConectTo(state2, new PassAfterNthTime(4)); fsm.SetFirstNode(state1); fsm.Start(); for (int i = 0; i < 5; i++) { fsm.Update(); } Assert.AreEqual(CallbackNames[0], state1.CallbackNames[0]); Assert.AreEqual(CallbackNames[1], state1.CallbackNames[1]); Assert.AreEqual(CallbackNames[2], state1.CallbackNames[2]); Assert.AreEqual(CallbackNames[3], state1.CallbackNames[3]); }