34#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
35#define GOOGLETEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
51 typedef std::list<T> List;
60TYPED_TEST_SUITE(FooTest,
MyTypes);
68TYPED_TEST(FooTest, DoesBlah) {
72 TypeParam n = this->value_;
76 n += TestFixture::shared_;
80 typename TestFixture::List values;
85TYPED_TEST(FooTest, HasPropertyA) { ... }
133TYPED_TEST_SUITE_P(FooTest);
137TYPED_TEST_P(FooTest, DoesBlah) {
143TYPED_TEST_P(FooTest, HasPropertyA) { ... }
149REGISTER_TYPED_TEST_SUITE_P(FooTest,
150 DoesBlah, HasPropertyA);
161INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest,
MyTypes);
174#include "gtest/internal/gtest-internal.h"
175#include "gtest/internal/gtest-port.h"
176#include "gtest/internal/gtest-type-util.h"
184#define GTEST_TYPE_PARAMS_(TestSuiteName) gtest_type_params_##TestSuiteName##_
188#define GTEST_NAME_GENERATOR_(TestSuiteName) \
189 gtest_type_params_##TestSuiteName##_NameGenerator
191#define TYPED_TEST_SUITE(CaseName, Types, ...) \
192 typedef ::testing::internal::GenerateTypeList<Types>::type \
193 GTEST_TYPE_PARAMS_(CaseName); \
194 typedef ::testing::internal::NameGeneratorSelector<__VA_ARGS__>::type \
195 GTEST_NAME_GENERATOR_(CaseName)
197#define TYPED_TEST(CaseName, TestName) \
198 static_assert(sizeof(GTEST_STRINGIFY_(TestName)) > 1, \
199 "test-name must not be empty"); \
200 template <typename gtest_TypeParam_> \
201 class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \
202 : public CaseName<gtest_TypeParam_> { \
204 typedef CaseName<gtest_TypeParam_> TestFixture; \
205 typedef gtest_TypeParam_ TypeParam; \
206 void TestBody() override; \
208 static bool gtest_##CaseName##_##TestName##_registered_ \
209 GTEST_ATTRIBUTE_UNUSED_ = ::testing::internal::TypeParameterizedTest< \
211 ::testing::internal::TemplateSel<GTEST_TEST_CLASS_NAME_(CaseName, \
213 GTEST_TYPE_PARAMS_( \
214 CaseName)>::Register("", \
215 ::testing::internal::CodeLocation( \
216 __FILE__, __LINE__), \
217 GTEST_STRINGIFY_(CaseName), \
218 GTEST_STRINGIFY_(TestName), 0, \
219 ::testing::internal::GenerateNames< \
220 GTEST_NAME_GENERATOR_(CaseName), \
221 GTEST_TYPE_PARAMS_(CaseName)>()); \
222 template <typename gtest_TypeParam_> \
223 void GTEST_TEST_CLASS_NAME_(CaseName, \
224 TestName)<gtest_TypeParam_>::TestBody()
227#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
228#define TYPED_TEST_CASE \
229 static_assert(::testing::internal::TypedTestCaseIsDeprecated(), ""); \
240#define GTEST_SUITE_NAMESPACE_(TestSuiteName) gtest_suite_##TestSuiteName##_
246#define GTEST_TYPED_TEST_SUITE_P_STATE_(TestSuiteName) \
247 gtest_typed_test_suite_p_state_##TestSuiteName##_
253#define GTEST_REGISTERED_TEST_NAMES_(TestSuiteName) \
254 gtest_registered_test_names_##TestSuiteName##_
259#define TYPED_TEST_SUITE_P(SuiteName) \
260 static ::testing::internal::TypedTestSuitePState \
261 GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName)
264#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
265#define TYPED_TEST_CASE_P \
266 static_assert(::testing::internal::TypedTestCase_P_IsDeprecated(), ""); \
270#define TYPED_TEST_P(SuiteName, TestName) \
271 namespace GTEST_SUITE_NAMESPACE_(SuiteName) { \
272 template <typename gtest_TypeParam_> \
273 class TestName : public SuiteName<gtest_TypeParam_> { \
275 typedef SuiteName<gtest_TypeParam_> TestFixture; \
276 typedef gtest_TypeParam_ TypeParam; \
277 void TestBody() override; \
279 static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \
280 GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).AddTestName( \
281 __FILE__, __LINE__, GTEST_STRINGIFY_(SuiteName), \
282 GTEST_STRINGIFY_(TestName)); \
284 template <typename gtest_TypeParam_> \
285 void GTEST_SUITE_NAMESPACE_( \
286 SuiteName)::TestName<gtest_TypeParam_>::TestBody()
289#define REGISTER_TYPED_TEST_SUITE_P(SuiteName, ...) \
290 namespace GTEST_SUITE_NAMESPACE_(SuiteName) { \
291 typedef ::testing::internal::Templates<__VA_ARGS__> gtest_AllTests_; \
293 static const char* const GTEST_REGISTERED_TEST_NAMES_( \
294 SuiteName) GTEST_ATTRIBUTE_UNUSED_ = \
295 GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).VerifyRegisteredTestNames( \
296 GTEST_STRINGIFY_(SuiteName), __FILE__, __LINE__, #__VA_ARGS__)
299#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
300#define REGISTER_TYPED_TEST_CASE_P \
301 static_assert(::testing::internal::RegisterTypedTestCase_P_IsDeprecated(), \
303 REGISTER_TYPED_TEST_SUITE_P
306#define INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, SuiteName, Types, ...) \
307 static_assert(sizeof(GTEST_STRINGIFY_(Prefix)) > 1, \
308 "test-suit-prefix must not be empty"); \
309 static bool gtest_##Prefix##_##SuiteName GTEST_ATTRIBUTE_UNUSED_ = \
310 ::testing::internal::TypeParameterizedTestSuite< \
311 SuiteName, GTEST_SUITE_NAMESPACE_(SuiteName)::gtest_AllTests_, \
312 ::testing::internal::GenerateTypeList<Types>::type>:: \
313 Register(GTEST_STRINGIFY_(Prefix), \
314 ::testing::internal::CodeLocation(__FILE__, __LINE__), \
315 >EST_TYPED_TEST_SUITE_P_STATE_(SuiteName), \
316 GTEST_STRINGIFY_(SuiteName), \
317 GTEST_REGISTERED_TEST_NAMES_(SuiteName), \
318 ::testing::internal::GenerateNames< \
319 ::testing::internal::NameGeneratorSelector< \
320 __VA_ARGS__>::type, \
321 ::testing::internal::GenerateTypeList<Types>::type>())
324#ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
325#define INSTANTIATE_TYPED_TEST_CASE_P \
327 ::testing::internal::InstantiateTypedTestCase_P_IsDeprecated(), ""); \
328 INSTANTIATE_TYPED_TEST_SUITE_P
Definition gtest-type-util.h:156