37#ifndef GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
38#define GOOGLETEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
63TEST_P(FooTest, DoesBlah) {
66 EXPECT_TRUE(foo.Blah(GetParam()));
70TEST_P(FooTest, HasBlahBlah) {
98INSTANTIATE_TEST_SUITE_P(InstantiationName,
100 Values(
"meeny",
"miny",
"moe"));
121const char* pets[] = {
"cat",
"dog"};
122INSTANTIATE_TEST_SUITE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
166TEST_F(BaseTest, HasFoo) {
172 EXPECT_TRUE(foo.Blah(GetParam()));
180#include "gtest/internal/gtest-internal.h"
181#include "gtest/internal/gtest-param-util.h"
182#include "gtest/internal/gtest-port.h"
228template <
typename T,
typename IncrementT>
229internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
230 return internal::ParamGenerator<T>(
231 new internal::RangeGenerator<T, IncrementT>(start, end, step));
235internal::ParamGenerator<T> Range(T start, T end) {
236 return Range(start, end, 1);
294template <
typename ForwardIterator>
295internal::ParamGenerator<
296 typename std::iterator_traits<ForwardIterator>::value_type>
297ValuesIn(ForwardIterator begin, ForwardIterator end) {
298 typedef typename std::iterator_traits<ForwardIterator>::value_type ParamType;
299 return internal::ParamGenerator<ParamType>(
300 new internal::ValuesInIteratorRangeGenerator<ParamType>(begin, end));
303template <
typename T,
size_t N>
304internal::ParamGenerator<T> ValuesIn(
const T (&array)[N]) {
305 return ValuesIn(array, array + N);
308template <
class Container>
309internal::ParamGenerator<typename Container::value_type> ValuesIn(
310 const Container& container) {
311 return ValuesIn(container.begin(), container.end());
334template <
typename... T>
335internal::ValueArray<T...> Values(T... v) {
336 return internal::ValueArray<T...>(std::move(v)...);
359inline internal::ParamGenerator<bool>
Bool() {
return Values(
false,
true); }
405template <
typename... Generator>
406internal::CartesianProductHolder<Generator...> Combine(
const Generator&... g) {
407 return internal::CartesianProductHolder<Generator...>(g...);
445internal::ParamConverterGenerator<T> ConvertGenerator(
446 internal::ParamGenerator<T> gen) {
447 return internal::ParamConverterGenerator<T>(gen);
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
Definition gtest-typed-test_test.cc:260
Definition gtest_pred_impl_unittest.cc:53