@@ -51,6 +51,9 @@ template <size_t N> constexpr size_t string_length(const char (&)[N]) {
51
51
"test suite with test name exceeds the maximum length of 250 " \
52
52
"characters.");
53
53
54
+ #define LZT_CONCATENATE_ (a, b ) a##b
55
+ #define LZT_CONCATENATE (a, b ) LZT_CONCATENATE_(a, b)
56
+
54
57
#define TEST (test_suite_name, test_name ) \
55
58
static_assert (false , " Use LZT_TEST instead of TEST" ); \
56
59
void LZT_BODY_##test_suite_name##_##test_name()
@@ -76,10 +79,51 @@ template <size_t N> constexpr size_t string_length(const char (&)[N]) {
76
79
} \
77
80
void LZT_BODY_##test_suite_name##_##test_name()
78
81
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
+
79
121
#define LZT_TEST_P (test_suite_name, test_name ) \
80
122
LZT_NAME_STATIC_VALIDATION (test_suite_name, test_name) \
123
+ LZT_HELPER_CLASS_INIT (test_suite_name, test_name) \
81
124
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) { \
83
127
public: \
84
128
GTEST_TEST_CLASS_NAME_ (test_suite_name, test_name)() {} \
85
129
void TestBody () override ; \
@@ -115,8 +159,10 @@ template <size_t N> constexpr size_t string_length(const char (&)[N]) {
115
159
116
160
#define LZT_TEST_F_ (test_suite_name, test_name ) \
117
161
LZT_NAME_STATIC_VALIDATION (test_suite_name, test_name) \
162
+ LZT_HELPER_CLASS_INIT(test_suite_name, test_name) \
118
163
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) { \
120
166
public: \
121
167
GTEST_TEST_CLASS_NAME_ (test_suite_name, test_name)() = default ; \
122
168
~GTEST_TEST_CLASS_NAME_ (test_suite_name, test_name)() override = default ; \
0 commit comments