32 #ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ 33 #define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ 50 typedef std::list<T> List;
58 typedef testing::Types<char, int, unsigned int>
MyTypes;
72 TypeParam n = this->value_;
76 n += TestFixture::shared_;
80 typename TestFixture::List values;
107 template <
typename T>
134 DoesBlah, HasPropertyA);
144 typedef testing::Types<char, int, unsigned int>
MyTypes;
153 #include "gtest/internal/gtest-port.h" 154 #include "gtest/internal/gtest-type-util.h" 158 #if GTEST_HAS_TYPED_TEST 164 # define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ 169 # define TYPED_TEST_CASE(CaseName, Types) \ 170 typedef ::testing::internal::TypeList< Types >::type \ 171 GTEST_TYPE_PARAMS_(CaseName) 173 # define TYPED_TEST(CaseName, TestName) \ 174 template <typename gtest_TypeParam_> \ 175 class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ 176 : public CaseName<gtest_TypeParam_> { \ 178 typedef CaseName<gtest_TypeParam_> TestFixture; \ 179 typedef gtest_TypeParam_ TypeParam; \ 180 virtual void TestBody(); \ 182 bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ 183 ::testing::internal::TypeParameterizedTest< \ 185 ::testing::internal::TemplateSel< \ 186 GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ 187 GTEST_TYPE_PARAMS_(CaseName)>::Register(\ 188 "", #CaseName, #TestName, 0); \ 189 template <typename gtest_TypeParam_> \ 190 void GTEST_TEST_CLASS_NAME_(CaseName, TestName)<gtest_TypeParam_>::TestBody() 192 #endif // GTEST_HAS_TYPED_TEST 196 #if GTEST_HAS_TYPED_TEST_P 203 # define GTEST_CASE_NAMESPACE_(TestCaseName) \ 204 gtest_case_##TestCaseName##_ 210 # define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ 211 gtest_typed_test_case_p_state_##TestCaseName##_ 217 # define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ 218 gtest_registered_test_names_##TestCaseName##_ 223 # define TYPED_TEST_CASE_P(CaseName) \ 224 static ::testing::internal::TypedTestCasePState \ 225 GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) 227 # define TYPED_TEST_P(CaseName, TestName) \ 228 namespace GTEST_CASE_NAMESPACE_(CaseName) { \ 229 template <typename gtest_TypeParam_> \ 230 class TestName : public CaseName<gtest_TypeParam_> { \ 232 typedef CaseName<gtest_TypeParam_> TestFixture; \ 233 typedef gtest_TypeParam_ TypeParam; \ 234 virtual void TestBody(); \ 236 static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ 237 GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ 238 __FILE__, __LINE__, #CaseName, #TestName); \ 240 template <typename gtest_TypeParam_> \ 241 void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody() 243 # define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ 244 namespace GTEST_CASE_NAMESPACE_(CaseName) { \ 245 typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ 247 static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \ 248 GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\ 249 __FILE__, __LINE__, #__VA_ARGS__) 254 # define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ 255 bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ 256 ::testing::internal::TypeParameterizedTestCase<CaseName, \ 257 GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \ 258 ::testing::internal::TypeList< Types >::type>::Register(\ 259 #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName)) 261 #endif // GTEST_HAS_TYPED_TEST_P 263 #endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ TYPED_TEST_CASE_P(TypeParamTest)
TYPED_TEST_P(TypeParamTest, TestA)
REGISTER_TYPED_TEST_CASE_P(TypeParamTest, TestA, TestB)
TYPED_TEST_CASE(TypedTest, MyTypes)
INSTANTIATE_TYPED_TEST_CASE_P(My, TypeParamTest, MyTypes)
testing::Types< VeryLoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooogName, int *, MyArray< bool, 42 > > MyTypes
TYPED_TEST(TypedTest, TestA)