SpTest.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #ifndef _RVC_SPTEST_H__
  2. #define _RVC_SPTEST_H__
  3. #pragma once
  4. #include "SpBase.h"
  5. #include "SpHelper.h"
  6. //helper macro for test temporary.
  7. #define TEST_MODE_SWITCH_ON 1
  8. #if defined(TEST_MODE_SWITCH_ON) && TEST_MODE_SWITCH_ON == 1
  9. #define IFFAILRET(func) \
  10. do { \
  11. ErrorCodeEnum errorCode = func; \
  12. if (errorCode != Error_Succeed) { \
  13. LogError(Severity_High, Error_Failed, 0,\
  14. CSimpleStringA::Format("Invoke \"" #func "\" failed ec %s! at file: <%s>, line: %d",\
  15. SpStrError(errorCode), _GetFileName(__FILE__), __LINE__));\
  16. return Error_Failed; \
  17. } \
  18. } while (false)
  19. #define IFFAILBREAK(func) \
  20. do { \
  21. ErrorCodeEnum errorCode = func; \
  22. if (errorCode != Error_Succeed) { \
  23. LogError(Severity_High, Error_Failed, 0,\
  24. CSimpleStringA::Format("Invoke \"" #func "\" failed ec %s! at file: <%s>, line: %d",\
  25. SpStrError(errorCode), _GetFileName(__FILE__), __LINE__));\
  26. return; \
  27. } \
  28. } while (false)
  29. #define REQUIRE(expr) \
  30. do { \
  31. if (!(expr)) { \
  32. LogError(Severity_High, Error_Failed, 0,\
  33. CSimpleStringA::Format("expression (\"" #expr "\") requires failed! at file: <%s>, line: %d", _GetFileName(__FILE__), __LINE__));\
  34. return Error_Failed; \
  35. } \
  36. } while (false)
  37. #define CHECK(expr) \
  38. do { \
  39. if (!(expr)) { \
  40. LogError(Severity_High, Error_Failed, 0,\
  41. CSimpleStringA::Format("expression (\"" #expr "\") requires failed! at file: <%s>, line: %d", _GetFileName(__FILE__), __LINE__));\
  42. return; \
  43. } \
  44. } while (false)
  45. #define THROW_FATAL(fmt, ...) \
  46. LogError(Severity_High, Error_Failed, 0, \
  47. CSimpleStringA::Format("%s at file: <%s>, line: %d", \
  48. (LPCTSTR)CSimpleStringA::Format(fmt, ##__VA_ARGS__), _GetFileName(__FILE__), __LINE__))
  49. #define THROW_ERROR(fmt, ...) \
  50. LogError(Severity_Middle, Error_Failed, 0, \
  51. CSimpleStringA::Format("%s at file: <%s>, line: %d", \
  52. (LPCTSTR)CSimpleStringA::Format(fmt, ##__VA_ARGS__), _GetFileName(__FILE__), __LINE__))
  53. #else
  54. #define IFFAILRET(func)
  55. #define IFFAILBREAK(func)
  56. #define REQUIRE(expr)
  57. #define CHECK(expr)
  58. #define THROW_FATAL(fmt, ...)
  59. #define THROW_ERROR(fmt, ...)
  60. #endif
  61. #define REQUIRE_FALSE(expr) \
  62. REQUIRE(!(expr))
  63. #define CHECK_FALSE(expr) \
  64. CHECK(!(expr))
  65. /** Test Case */
  66. struct ITestCaseSuite
  67. {
  68. };
  69. template<typename T>
  70. class MethodTestCaseT
  71. {
  72. public:
  73. /*Prototype of Test Case Function*/
  74. typedef ErrorCodeEnum(T::* TestCaseFunction)(const CAutoArray<CSimpleStringA>& strArgs);
  75. MethodTestCaseT(TestCaseFunction pFunc, const CAutoArray<CSimpleStringA>& strArgs)
  76. : m_pFunc(pFunc),m_strArgs()
  77. {
  78. m_strArgs.Copy(strArgs);
  79. }
  80. virtual void Invoke(T* t) const
  81. {
  82. (t->*m_pFunc)(m_strArgs);
  83. }
  84. private:
  85. virtual ~MethodTestCaseT() {}
  86. TestCaseFunction m_pFunc;
  87. CAutoArray<CSimpleStringA> m_strArgs;
  88. };
  89. #endif //_RVC_SPTEST_H__