RUFsmUnitTest.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /// 状态机的单元测试
  2. #ifndef RuFsmUnitTest_h
  3. #define RuFsmUnitTest_h
  4. #include "RUDefine.h"
  5. #include "RUStateDelegate.h"
  6. NS_RU_BEGIN
  7. class FsmUnitTest
  8. {
  9. public:
  10. FsmUnitTest() = default;
  11. ~FsmUnitTest() = default;
  12. static void runTest();
  13. /*############### 单层状态机测试用例 ##################*/
  14. /*单层状态机
  15. 1.状态机正常初始化(stateMachineLoader类测试)
  16. 2.打印初始化后的状态机结构信息
  17. */
  18. static void fsmTest1();
  19. /*单层状态机
  20. 1.状态机的正常运行
  21. 2.状态机响应事件后的流程测试
  22. */
  23. static void fsmTest2();
  24. /*单层状态机
  25. 1.指定状态机的初始状态并运行状态机
  26. */
  27. static void fsmTest3();
  28. /*单层状态机
  29. 1.状态机未运行不能响应事件
  30. 2.状态机只能响应运行状态下可响应的事件
  31. */
  32. static void fsmTest4();
  33. /*单层状态机
  34. 1.测试stateDelegate
  35. */
  36. static void fsmTest5();
  37. /*单层状态机
  38. 1.测试事件带参数
  39. */
  40. static void fsmTest6();
  41. /*单层状态机
  42. 1.测试状态自动跳转事件
  43. */
  44. static void fsmTest7();
  45. /*############### 多层状态机测试用例 ##################*/
  46. /*分层状态机
  47. 1.状态机正常初始化(stateMachineLoader类测试)
  48. 2.打印初始化后的状态机结构信息
  49. */
  50. static void hfsmTest1();
  51. /*分层状态机
  52. 1.三层状态机正常初始化(stateMachineLoader类测试)
  53. 2.打印初始化后的状态机结构信息
  54. */
  55. static void hfsmTest2();
  56. /*分层状态机 (eg:家装1旧1新)
  57. 1.状态机的正常运行
  58. 2.状态机响应事件(大状态间跳转)流程测试
  59. */
  60. static void hfsmTest3();
  61. /*分层状态机
  62. 1.指定状态机的运行状态
  63. 2.状态机响应事件(分层状态内跳转)流程测试
  64. */
  65. static void hfsmTest4();
  66. /*分层状态机
  67. 1.大状态机和分层小状态机都能响应同一个事件时,优先分层小状态机响应
  68. */
  69. static void hfsmTest5();
  70. };
  71. class TestStateDelegate: public StateDelegate
  72. {
  73. public:
  74. virtual void beforeSwitch(State* state, const std::vector<StateActInfo>& stateActInfo, StateActInfo evt, std::function<void(void)> actFinishCb = nullptr);
  75. protected:
  76. virtual void execStateAct(State* state, const StateActInfo* stateActInfo, const std::map<string, string>& eventParams, const std::function<void(void)>& actFinishCb = nullptr) override;
  77. };
  78. NS_RU_END
  79. #endif /* RuFsmUnitTest_h */