/// 状态机的单元测试 #ifndef RuFsmUnitTest_h #define RuFsmUnitTest_h #include "RUDefine.h" #include "RUStateDelegate.h" NS_RU_BEGIN class FsmUnitTest { public: FsmUnitTest() = default; ~FsmUnitTest() = default; static void runTest(); /*############### 单层状态机测试用例 ##################*/ /*单层状态机 1.状态机正常初始化(stateMachineLoader类测试) 2.打印初始化后的状态机结构信息 */ static void fsmTest1(); /*单层状态机 1.状态机的正常运行 2.状态机响应事件后的流程测试 */ static void fsmTest2(); /*单层状态机 1.指定状态机的初始状态并运行状态机 */ static void fsmTest3(); /*单层状态机 1.状态机未运行不能响应事件 2.状态机只能响应运行状态下可响应的事件 */ static void fsmTest4(); /*单层状态机 1.测试stateDelegate */ static void fsmTest5(); /*单层状态机 1.测试事件带参数 */ static void fsmTest6(); /*单层状态机 1.测试状态自动跳转事件 */ static void fsmTest7(); /*############### 多层状态机测试用例 ##################*/ /*分层状态机 1.状态机正常初始化(stateMachineLoader类测试) 2.打印初始化后的状态机结构信息 */ static void hfsmTest1(); /*分层状态机 1.三层状态机正常初始化(stateMachineLoader类测试) 2.打印初始化后的状态机结构信息 */ static void hfsmTest2(); /*分层状态机 (eg:家装1旧1新) 1.状态机的正常运行 2.状态机响应事件(大状态间跳转)流程测试 */ static void hfsmTest3(); /*分层状态机 1.指定状态机的运行状态 2.状态机响应事件(分层状态内跳转)流程测试 */ static void hfsmTest4(); /*分层状态机 1.大状态机和分层小状态机都能响应同一个事件时,优先分层小状态机响应 */ static void hfsmTest5(); }; class TestStateDelegate: public StateDelegate { public: virtual void beforeSwitch(State* state, const std::vector& stateActInfo, StateActInfo evt, std::function actFinishCb = nullptr); protected: virtual void execStateAct(State* state, const StateActInfo* stateActInfo, const std::map& eventParams, const std::function& actFinishCb = nullptr) override; }; NS_RU_END #endif /* RuFsmUnitTest_h */