#ifndef SDV_TEST_MACRO_H #define SDV_TEST_MACRO_H /** * @brief Software Defined Vehicle framework. */ namespace sdv { /** * @brief Namespace TEST */ namespace TEST { /** * @brief Enum for warning levels. */ enum WarningLevel { WARNING_ENABLED, //) #define SDV_ASSERT_GT(val1, val2, level) \ HANDLE_WARNING_LEVEL(level, ASSERT_GT(val1, val2), val1, val2, >) #define SDV_EXPECT_GE(val1, val2, level) \ HANDLE_WARNING_LEVEL(level, EXPECT_GE(val1, val2), val1, val2, >=) #define SDV_ASSERT_GE(val1, val2, level) \ HANDLE_WARNING_LEVEL(level, ASSERT_GE(val1, val2), val1, val2, >=) #define SDV_EXPECT_STREQ(str1, str2, level) \ HANDLE_WARNING_LEVEL(level, EXPECT_STREQ((str1).c_str(), (str2).c_str()), str1, str2, ==) #define SDV_ASSERT_STREQ(str1, str2, level) \ HANDLE_WARNING_LEVEL(level, ASSERT_STREQ((str1).c_str(), (str2).c_str()), str1, str2, ==) #define SDV_EXPECT_STRNE(str1, str2, level) \ HANDLE_WARNING_LEVEL(level, EXPECT_STRNE(str1.c_str(), str2.c_str()), str1, str2, !=) #define SDV_ASSERT_STRNE(str1, str2, level) \ HANDLE_WARNING_LEVEL(level, ASSERT_STRNE(str1.c_str(), str2.c_str()), str1, str2, !=) #define SDV_EXPECT_STRCASEEQ(str1, str2, level) \ HANDLE_WARNING_LEVEL(level, EXPECT_STRCASEEQ((str1).c_str(), (str2).c_str()), str1, str2, ==) #define SDV_ASSERT_STRCASEEQ(str1, str2, level) \ HANDLE_WARNING_LEVEL(level, ASSERT_STRCASEEQ((str1).c_str(), (str2).c_str()), str1, str2, ==) #define SDV_EXPECT_STRCASENE(str1, str2, level) \ HANDLE_WARNING_LEVEL(level, EXPECT_STRCASENE((str1).c_str(), (str2).c_str()), str1, str2, !=) #define SDV_ASSERT_STRCASENE(str1, str2, level) \ HANDLE_WARNING_LEVEL(level, ASSERT_STRCASENE((str1).c_str(), (str2).c_str()), str1, str2, !=) /** * @brief Macro for equality check (==) with warning reporting for time critical tests. * @param[in] val1 The first value. * @param[in] val2 The second value. * @param[in] warningLevel The level of warning to display. */ #define SDV_TIMING_EXPECT_EQ(val1, val2, warningLevel) \ sdv::TEST::ReportWarning((val1) == (val2), warningLevel, \ "Expected " #val1 " == " #val2 " (" #val1 "=" + std::to_string(val1) + ", " #val2 "=" + std::to_string(val2) + ")", \ __FILE__, __LINE__) /** * @brief Macro for inequality check (!=) with warning reporting for time critical tests. * @param[in] val1 The first value. * @param[in] val2 The second value. * @param[in] warningLevel The level of warning to display. */ #define SDV_TIMING_EXPECT_NE(val1, val2, warningLevel) \ sdv::TEST::ReportWarning((val1) != (val2), warningLevel, \ "Expected " #val1 " != " #val2 " (" #val1 "=" + std::to_string(val1) + ", " #val2 "=" + std::to_string(val2) + ")", \ __FILE__, __LINE__) /** * @brief Macro for greater-than check (>) with warning reporting for time critical tests. * @param[in] val1 The first value. * @param[in] val2 The second value. * @param[in] warningLevel The level of warning to display. */ #define SDV_TIMING_EXPECT_GT(val1, val2, warningLevel) \ sdv::TEST::ReportWarning((val1) > (val2), warningLevel, \ "Expected " #val1 " > " #val2 " (" #val1 "=" + std::to_string(val1) + ", " #val2 "=" + std::to_string(val2) + ")", \ __FILE__, __LINE__) /** * @brief Macro for less-than check (<) with warning reporting for time critical tests. * @param[in] val1 The first value. * @param[in] val2 The second value. * @param[in] warningLevel The level of warning to display. */ #define SDV_TIMING_EXPECT_LT(val1, val2, warningLevel) \ sdv::TEST::ReportWarning((val1) < (val2), warningLevel, \ "Expected " #val1 " < " #val2 " (" #val1 "=" + std::to_string(val1) + ", " #val2 "=" + std::to_string(val2) + ")", \ __FILE__, __LINE__) /** * @brief Macro for greater-than-or-equal-to check (>=) with warning reporting for time critical tests. * @param[in] val1 The first value. * @param[in] val2 The second value. * @param[in] warningLevel The level of warning to display. */ #define SDV_TIMING_EXPECT_GE(val1, val2, warningLevel) \ sdv::TEST::ReportWarning((val1) >= (val2), warningLevel, \ "Expected " #val1 " >= " #val2 " (" #val1 "=" + std::to_string(val1) + ", " #val2 "=" + std::to_string(val2) + ")", \ __FILE__, __LINE__) /** * @brief Macro for less-than-or-equal-to check (<=) with warning reporting for time critical tests. * @param[in] val1 The first value. * @param[in] val2 The second value. * @param[in] warningLevel The level of warning to display. */ #define SDV_TIMING_EXPECT_LE(val1, val2, warningLevel) \ sdv::TEST::ReportWarning((val1) <= (val2), warningLevel, \ "Expected " #val1 " <= " #val2 " (" #val1 "=" + std::to_string(val1) + ", " #val2 "=" + std::to_string(val2) + ")", \ __FILE__, __LINE__) #endif // SDV_TEST_MACRO_H