Skip to content

Commit f3b773a

Browse files
authored
add wrapper for other gtest functions (#249)
1 parent 471f9f2 commit f3b773a

File tree

1 file changed

+48
-2
lines changed

1 file changed

+48
-2
lines changed

utils/utils/include/utils/utils_gtest_helper.hpp

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ template <size_t N> constexpr size_t string_length(const char (&)[N]) {
5151
"test suite with test name exceeds the maximum length of 250 " \
5252
"characters.");
5353

54+
#define LZT_CONCATENATE_(a, b) a##b
55+
#define LZT_CONCATENATE(a, b) LZT_CONCATENATE_(a, b)
56+
5457
#define TEST(test_suite_name, test_name) \
5558
static_assert(false, "Use LZT_TEST instead of TEST"); \
5659
void LZT_BODY_##test_suite_name##_##test_name()
@@ -76,10 +79,51 @@ template <size_t N> constexpr size_t string_length(const char (&)[N]) {
7679
} \
7780
void LZT_BODY_##test_suite_name##_##test_name()
7881

82+
#define LZT_HELPER_CLASS_INIT(test_suite_name, test_name) \
83+
class LZT_CONCATENATE(GTEST_TEST_CLASS_NAME_(test_suite_name, test_name), \
84+
_helper) \
85+
: public test_suite_name { \
86+
public: \
87+
static void SetUpTestSuite() { \
88+
try { \
89+
test_suite_name::SetUpTestSuite(); \
90+
} catch (const LztGtestSkipExectuionException &e) { \
91+
GTEST_SKIP() << e.what(); \
92+
} \
93+
} \
94+
static void TearDownTestSuite() { \
95+
try { \
96+
test_suite_name::TearDownTestSuite(); \
97+
} catch (const LztGtestSkipExectuionException &e) { \
98+
GTEST_SKIP() << e.what(); \
99+
} \
100+
} \
101+
void SetUp() override; \
102+
void TearDown() override; \
103+
}; \
104+
void LZT_CONCATENATE(GTEST_TEST_CLASS_NAME_(test_suite_name, test_name), \
105+
_helper)::SetUp() { \
106+
try { \
107+
test_suite_name::SetUp(); \
108+
} catch (const LztGtestSkipExectuionException &e) { \
109+
GTEST_SKIP() << e.what(); \
110+
} \
111+
} \
112+
void LZT_CONCATENATE(GTEST_TEST_CLASS_NAME_(test_suite_name, test_name), \
113+
_helper)::TearDown() { \
114+
try { \
115+
test_suite_name::TearDown(); \
116+
} catch (const LztGtestSkipExectuionException &e) { \
117+
GTEST_SKIP() << e.what(); \
118+
} \
119+
}
120+
79121
#define LZT_TEST_P(test_suite_name, test_name) \
80122
LZT_NAME_STATIC_VALIDATION(test_suite_name, test_name) \
123+
LZT_HELPER_CLASS_INIT(test_suite_name, test_name) \
81124
class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
82-
: public test_suite_name { \
125+
: public LZT_CONCATENATE( \
126+
GTEST_TEST_CLASS_NAME_(test_suite_name, test_name), _helper) { \
83127
public: \
84128
GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() {} \
85129
void TestBody() override; \
@@ -115,8 +159,10 @@ template <size_t N> constexpr size_t string_length(const char (&)[N]) {
115159

116160
#define LZT_TEST_F_(test_suite_name, test_name) \
117161
LZT_NAME_STATIC_VALIDATION(test_suite_name, test_name) \
162+
LZT_HELPER_CLASS_INIT(test_suite_name, test_name) \
118163
class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
119-
: public test_suite_name { \
164+
: public LZT_CONCATENATE( \
165+
GTEST_TEST_CLASS_NAME_(test_suite_name, test_name), _helper) { \
120166
public: \
121167
GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() = default; \
122168
~GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() override = default; \

0 commit comments

Comments
 (0)