diff options
author | Ashley Hedberg <ahedberg@google.com> | 2019-01-30 19:26:14 (GMT) |
---|---|---|
committer | Ashley Hedberg <ahedberg@google.com> | 2019-01-30 19:26:14 (GMT) |
commit | 8e37822b4b216434eac1173a19ecd0dd1390a99a (patch) | |
tree | 842069fb4eab34a3815e7db3b06578d26bab51b9 /googletest | |
parent | ce29e55cfcbbadfdb41542bafa6104b26c7e3e5c (diff) | |
parent | 7c4164bf404d899b6d4c74beb1070da5647f55a2 (diff) | |
download | googletest-8e37822b4b216434eac1173a19ecd0dd1390a99a.zip googletest-8e37822b4b216434eac1173a19ecd0dd1390a99a.tar.gz googletest-8e37822b4b216434eac1173a19ecd0dd1390a99a.tar.bz2 |
Merge pull request #2063 from mathbunnyru:master
PiperOrigin-RevId: 231456275
Diffstat (limited to 'googletest')
-rw-r--r-- | googletest/docs/advanced.md | 2 | ||||
-rw-r--r-- | googletest/include/gtest/gtest-param-test.h | 23 | ||||
-rw-r--r-- | googletest/include/gtest/internal/gtest-param-util.h | 22 |
3 files changed, 30 insertions, 17 deletions
diff --git a/googletest/docs/advanced.md b/googletest/docs/advanced.md index acb7f24..dbe6694 100644 --- a/googletest/docs/advanced.md +++ b/googletest/docs/advanced.md @@ -1198,7 +1198,7 @@ also supports per-test-suite set-up/tear-down. To use it: 1. Outside your test fixture class (typically just below it), define those member variables, optionally giving them initial values. 1. In the same test fixture class, define a `static void SetUpTestSuite()` - function (remember not to spell it as **`SetupTestSuite`** with a small `u`!) + function (remember not to spell it as **`SetUpTestSuite`** with a small `u`!) to set up the shared resources and a `static void TearDownTestSuite()` function to tear them down. diff --git a/googletest/include/gtest/gtest-param-test.h b/googletest/include/gtest/gtest-param-test.h index 3f712cf..a0eecc6 100644 --- a/googletest/include/gtest/gtest-param-test.h +++ b/googletest/include/gtest/gtest-param-test.h @@ -544,11 +544,10 @@ internal::CartesianProductHolder10<Generator1, Generator2, Generator3, GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::AddToRegistry(); \ void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody() -// The last argument to INSTANTIATE_TEST_SUITE_P allows the user to specify -// generator and an optional function or functor that generates custom test name -// suffixes based on the test parameters. Such a function or functor should -// accept one argument of type testing::TestParamInfo<class ParamType>, and -// return std::string. +// The optional last argument to INSTANTIATE_TEST_SUITE_P allows the user +// to specify a function or functor that generates custom test name suffixes +// based on the test parameters. The function should accept one argument of +// type testing::TestParamInfo<class ParamType>, and return std::string. // // testing::PrintToStringParamName is a builtin test suffix generator that // returns the value of testing::PrintToString(GetParam()). @@ -557,21 +556,15 @@ internal::CartesianProductHolder10<Generator1, Generator2, Generator3, // alphanumeric characters or underscore. Because PrintToString adds quotes // to std::string and C strings, it won't work for these types. -#define GTEST_EXPAND_(arg) arg -#define GTEST_GET_FIRST_(first, ...) first -#define GTEST_GET_SECOND_(first, second, ...) second - -#define INSTANTIATE_TEST_SUITE_P(prefix, test_suite_name, ...) \ +#define INSTANTIATE_TEST_SUITE_P(prefix, test_suite_name, generator, ...) \ static ::testing::internal::ParamGenerator<test_suite_name::ParamType> \ gtest_##prefix##test_suite_name##_EvalGenerator_() { \ - return GTEST_EXPAND_(GTEST_GET_FIRST_(__VA_ARGS__, DUMMY_PARAM_)); \ + return generator; \ } \ static ::std::string gtest_##prefix##test_suite_name##_EvalGenerateName_( \ const ::testing::TestParamInfo<test_suite_name::ParamType>& info) { \ - return GTEST_EXPAND_(GTEST_GET_SECOND_( \ - __VA_ARGS__, \ - ::testing::internal::DefaultParamName<test_suite_name::ParamType>, \ - DUMMY_PARAM_))(info); \ + return ::testing::internal::GetParamNameGen<test_suite_name::ParamType>( \ + __VA_ARGS__)(info); \ } \ static int gtest_##prefix##test_suite_name##_dummy_ \ GTEST_ATTRIBUTE_UNUSED_ = \ diff --git a/googletest/include/gtest/internal/gtest-param-util.h b/googletest/include/gtest/internal/gtest-param-util.h index 12b1e52..bca7253 100644 --- a/googletest/include/gtest/internal/gtest-param-util.h +++ b/googletest/include/gtest/internal/gtest-param-util.h @@ -378,6 +378,26 @@ std::string DefaultParamName(const TestParamInfo<ParamType>& info) { // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. // +// Parameterized test name overload helpers, which help the +// INSTANTIATE_TEST_SUITE_P macro choose between the default parameterized +// test name generator and user param name generator. +template <class ParamType, class ParamNameGenFunctor> +ParamNameGenFunctor GetParamNameGen(ParamNameGenFunctor func) { + return func; +} + +template <class ParamType> +struct ParamNameGenFunc { + typedef std::string Type(const TestParamInfo<ParamType>&); +}; + +template <class ParamType> +typename ParamNameGenFunc<ParamType>::Type *GetParamNameGen() { + return DefaultParamName; +} + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// // Stores a parameter value and later creates tests parameterized with that // value. template <class TestClass> @@ -480,7 +500,7 @@ class ParameterizedTestSuiteInfo : public ParameterizedTestSuiteInfoBase { using ParamType = typename TestSuite::ParamType; // A function that returns an instance of appropriate generator type. typedef ParamGenerator<ParamType>(GeneratorCreationFunc)(); - typedef std::string ParamNameGeneratorFunc(const TestParamInfo<ParamType>&); + typedef typename ParamNameGenFunc<ParamType>::Type ParamNameGeneratorFunc; explicit ParameterizedTestSuiteInfo(const char* name, CodeLocation code_location) |