37 #ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 38 #define GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ 63 TEST_P(FooTest, DoesBlah) {
70 TEST_P(FooTest, HasBlahBlah) {
100 Values(
"meeny",
"miny",
"moe"));
121 const char* pets[] = {
"cat",
"dog"};
166 TEST_F(BaseTest, HasFoo) {
170 TEST_P(DerivedTest, DoesBlah) {
228 template <
typename T,
typename IncrementT>
234 template <
typename T>
236 return Range(start, end, 1);
294 template <
typename ForwardIterator>
296 typename std::iterator_traits<ForwardIterator>::value_type>
297 ValuesIn(ForwardIterator begin, ForwardIterator end) {
298 typedef typename std::iterator_traits<ForwardIterator>::value_type ParamType;
303 template <
typename T,
size_t N>
308 template <
class Container>
310 const Container& container) {
311 return ValuesIn(container.begin(), container.end());
334 template <
typename... T>
405 template <
typename... Generator>
444 template <
typename T>
450 #define TEST_P(test_suite_name, test_name) \ 451 class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \ 452 : public test_suite_name, private ::testing::internal::GTestNonCopyable {\ 454 GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() {} \ 455 void TestBody() override; \ 458 static int AddToRegistry() { \ 459 ::testing::UnitTest::GetInstance() \ 460 ->parameterized_test_registry() \ 461 .GetTestSuitePatternHolder<test_suite_name>( \ 462 GTEST_STRINGIFY_(test_suite_name), \ 463 ::testing::internal::CodeLocation(__FILE__, __LINE__)) \ 465 GTEST_STRINGIFY_(test_suite_name), GTEST_STRINGIFY_(test_name), \ 466 new ::testing::internal::TestMetaFactory<GTEST_TEST_CLASS_NAME_( \ 467 test_suite_name, test_name)>(), \ 468 ::testing::internal::CodeLocation(__FILE__, __LINE__)); \ 471 static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \ 473 int GTEST_TEST_CLASS_NAME_(test_suite_name, \ 474 test_name)::gtest_registering_dummy_ = \ 475 GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::AddToRegistry(); \ 476 void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody() 491 #define GTEST_EXPAND_(arg) arg 492 #define GTEST_GET_FIRST_(first, ...) first 493 #define GTEST_GET_SECOND_(first, second, ...) second 495 #define INSTANTIATE_TEST_SUITE_P(prefix, test_suite_name, ...) \ 496 static ::testing::internal::ParamGenerator<test_suite_name::ParamType> \ 497 gtest_##prefix##test_suite_name##_EvalGenerator_() { \ 498 return GTEST_EXPAND_(GTEST_GET_FIRST_(__VA_ARGS__, DUMMY_PARAM_)); \ 500 static ::std::string gtest_##prefix##test_suite_name##_EvalGenerateName_( \ 501 const ::testing::TestParamInfo<test_suite_name::ParamType>& info) { \ 502 if (::testing::internal::AlwaysFalse()) { \ 503 ::testing::internal::TestNotEmpty(GTEST_EXPAND_(GTEST_GET_SECOND_( \ 505 ::testing::internal::DefaultParamName<test_suite_name::ParamType>, \ 507 auto t = std::make_tuple(__VA_ARGS__); \ 508 static_assert(std::tuple_size<decltype(t)>::value <= 2, \ 511 return ((GTEST_EXPAND_(GTEST_GET_SECOND_( \ 513 ::testing::internal::DefaultParamName<test_suite_name::ParamType>, \ 514 DUMMY_PARAM_))))(info); \ 516 static int gtest_##prefix##test_suite_name##_dummy_ \ 517 GTEST_ATTRIBUTE_UNUSED_ = \ 518 ::testing::UnitTest::GetInstance() \ 519 ->parameterized_test_registry() \ 520 .GetTestSuitePatternHolder<test_suite_name>( \ 521 GTEST_STRINGIFY_(test_suite_name), \ 522 ::testing::internal::CodeLocation(__FILE__, __LINE__)) \ 523 ->AddTestSuiteInstantiation( \ 524 GTEST_STRINGIFY_(prefix), \ 525 >est_##prefix##test_suite_name##_EvalGenerator_, \ 526 >est_##prefix##test_suite_name##_EvalGenerateName_, \ 530 #define GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(T) \ 531 namespace gtest_do_not_use_outside_namespace_scope {} \ 532 static const ::testing::internal::MarkAsIgnored gtest_allow_ignore_##T( \ 536 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ 537 #define INSTANTIATE_TEST_CASE_P \ 538 static_assert(::testing::internal::InstantiateTestCase_P_IsDeprecated(), \ 540 INSTANTIATE_TEST_SUITE_P 541 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ 545 #endif // GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
internal::ParamGenerator< bool > Bool()
#define TEST_F(test_fixture, test_name)
internal::ParamConverterGenerator< T > ConvertGenerator(internal::ParamGenerator< T > gen)
internal::CartesianProductHolder< Generator... > Combine(const Generator &... g)
internal::ParamGenerator< typename std::iterator_traits< ForwardIterator >::value_type > ValuesIn(ForwardIterator begin, ForwardIterator end)
internal::ParamGenerator< typename Container::value_type > ValuesIn(const Container &container)
#define TEST_P(test_suite_name, test_name)
internal::ParamGenerator< T > Range(T start, T end)
#define EXPECT_TRUE(condition)
#define INSTANTIATE_TEST_SUITE_P(prefix, test_suite_name,...)
internal::ValueArray< T... > Values(T... v)