35 #ifndef GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
36 #define GOOGLETEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
45 #include <type_traits>
49 #include "gtest/internal/gtest-internal.h"
50 #include "gtest/internal/gtest-port.h"
51 #include "gtest/gtest-printers.h"
52 #include "gtest/gtest-test-part.h"
57 template <
class ParamType>
58 struct TestParamInfo {
68 struct PrintToStringParamName {
69 template <
class ParamType>
85 CodeLocation code_location);
87 template <
typename>
class ParamGeneratorInterface;
88 template <
typename>
class ParamGenerator;
93 class ParamIteratorInterface {
122 template <
typename T>
133 impl_.reset(other.impl_->Clone());
137 const T&
operator*()
const {
return *impl_->Current(); }
151 return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_);
154 return !(*
this == other);
160 std::unique_ptr<ParamIteratorInterface<T> > impl_;
165 template <
typename T>
199 std::shared_ptr<const ParamGeneratorInterface<T> > impl_;
206 template <
typename T,
typename IncrementT>
207 class RangeGenerator :
public ParamGeneratorInterface<T> {
210 : begin_(begin), end_(end),
211 step_(step), end_index_(CalculateEndIndex(begin, end, step)) {}
215 return new Iterator(
this, begin_, 0, step_);
218 return new Iterator(
this, end_, end_index_, step_);
226 : base_(base), value_(value), index_(index), step_(step) {}
227 ~Iterator()
override {}
229 const ParamGeneratorInterface<T>* BaseGenerator()
const override {
232 void Advance()
override {
233 value_ =
static_cast<T
>(value_ + step_);
236 ParamIteratorInterface<T>* Clone()
const override {
237 return new Iterator(*
this);
239 const T* Current()
const override {
return &value_; }
240 bool Equals(
const ParamIteratorInterface<T>& other)
const override {
244 <<
"The program attempted to compare iterators "
245 <<
"from different generators." << std::endl;
246 const int other_index =
247 CheckedDowncastToActualType<const Iterator>(&other)->index_;
248 return index_ == other_index;
252 Iterator(
const Iterator& other)
253 : ParamIteratorInterface<T>(),
254 base_(other.base_), value_(other.value_), index_(other.index_),
255 step_(other.step_) {}
258 void operator=(
const Iterator& other);
260 const ParamGeneratorInterface<T>*
const base_;
263 const IncrementT step_;
266 static int CalculateEndIndex(
const T& begin,
268 const IncrementT& step) {
270 for (T i = begin; i < end; i = static_cast<T>(i + step))
280 const IncrementT step_;
283 const int end_index_;
291 template <
typename T>
292 class ValuesInIteratorRangeGenerator :
public ParamGeneratorInterface<T> {
294 template <
typename ForwardIterator>
296 : container_(begin, end) {}
300 return new Iterator(
this, container_.begin());
303 return new Iterator(
this, container_.end());
307 typedef typename ::std::vector<T> ContainerType;
312 typename ContainerType::const_iterator iterator)
313 : base_(base), iterator_(iterator) {}
314 ~Iterator()
override {}
316 const ParamGeneratorInterface<T>* BaseGenerator()
const override {
319 void Advance()
override {
323 ParamIteratorInterface<T>* Clone()
const override {
324 return new Iterator(*
this);
333 const T* Current()
const override {
334 if (value_.get() ==
nullptr) value_.reset(
new T(*iterator_));
337 bool Equals(
const ParamIteratorInterface<T>& other)
const override {
341 <<
"The program attempted to compare iterators "
342 <<
"from different generators." << std::endl;
344 CheckedDowncastToActualType<const Iterator>(&other)->iterator_;
348 Iterator(
const Iterator& other)
351 : ParamIteratorInterface<T>(),
353 iterator_(other.iterator_) {}
355 const ParamGeneratorInterface<T>*
const base_;
356 typename ContainerType::const_iterator iterator_;
362 mutable std::unique_ptr<const T> value_;
368 const ContainerType container_;
375 template <
class ParamType>
378 name_stream << info.index;
379 return name_stream.GetString();
382 template <
typename T =
int>
384 static_assert(
sizeof(T) == 0,
"Empty arguments are not allowed.");
386 template <
typename T =
int>
393 template <
class TestClass>
394 class ParameterizedTestFactory :
public TestFactoryBase {
398 parameter_(parameter) {}
400 TestClass::SetParam(¶meter_);
401 return new TestClass();
414 template <
class ParamType>
415 class TestMetaFactoryBase {
430 template <
class TestSuite>
456 class ParameterizedTestSuiteInfoBase {
481 struct MarkAsIgnored {
495 template <
class TestSuite>
508 : test_suite_name_(name), code_location_(code_location) {}
512 return test_suite_name_;
525 tests_.push_back(std::shared_ptr<TestInfo>(
new TestInfo(
526 test_suite_name, test_base_name, meta_factory, code_location)));
531 GeneratorCreationFunc* func,
533 const char* file,
int line) {
534 instantiations_.push_back(
535 InstantiationInfo(instantiation_name, func, name_func, file, line));
544 bool generated_instantiations =
false;
546 for (
typename TestInfoContainer::iterator test_it = tests_.begin();
547 test_it != tests_.end(); ++test_it) {
548 std::shared_ptr<TestInfo> test_info = *test_it;
549 for (
typename InstantiationContainer::iterator gen_it =
550 instantiations_.begin(); gen_it != instantiations_.end();
552 const std::string& instantiation_name = gen_it->name;
555 const char* file = gen_it->file;
556 int line = gen_it->line;
558 std::string test_suite_name;
559 if ( !instantiation_name.empty() )
560 test_suite_name = instantiation_name +
"/";
561 test_suite_name += test_info->test_suite_base_name;
564 std::set<std::string> test_param_names;
567 param_it != generator.
end(); ++param_it, ++i) {
568 generated_instantiations =
true;
572 std::string param_name = name_func(
576 <<
"Parameterized test name '" << param_name
577 <<
"' is invalid, in " << file
578 <<
" line " << line << std::endl;
581 <<
"Duplicate parameterized test name '" << param_name
582 <<
"', in " << file <<
" line " << line << std::endl;
584 test_param_names.insert(param_name);
586 if (!test_info->test_base_name.empty()) {
587 test_name_stream << test_info->test_base_name <<
"/";
589 test_name_stream << param_name;
591 test_suite_name.c_str(), test_name_stream.
GetString().c_str(),
597 test_info->test_meta_factory->CreateTestFactory(*param_it));
602 if (!generated_instantiations) {
613 TestInfo(
const char* a_test_suite_base_name,
const char* a_test_base_name,
616 : test_suite_base_name(a_test_suite_base_name),
617 test_base_name(a_test_base_name),
618 test_meta_factory(a_test_meta_factory),
619 code_location(a_code_location) {}
621 const std::string test_suite_base_name;
622 const std::string test_base_name;
623 const std::unique_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory;
624 const CodeLocation code_location;
626 using TestInfoContainer = ::std::vector<std::shared_ptr<TestInfo> >;
630 struct InstantiationInfo {
631 InstantiationInfo(
const std::string &name_in,
632 GeneratorCreationFunc* generator_in,
637 generator(generator_in),
638 name_func(name_func_in),
643 GeneratorCreationFunc* generator;
648 typedef ::std::vector<InstantiationInfo> InstantiationContainer;
650 static bool IsValidParamName(
const std::string& name) {
656 for (std::string::size_type index = 0; index < name.size(); ++index) {
657 if (!isalnum(name[index]) && name[index] !=
'_')
664 const std::string test_suite_name_;
665 CodeLocation code_location_;
666 TestInfoContainer tests_;
667 InstantiationContainer instantiations_;
673 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
674 template <
class TestCase>
684 class ParameterizedTestSuiteRegistry {
688 for (
auto& test_suite_info : test_suite_infos_) {
689 delete test_suite_info;
695 template <
class TestSuite>
697 const char* test_suite_name,
CodeLocation code_location) {
699 for (
auto& test_suite_info : test_suite_infos_) {
700 if (test_suite_info->GetTestSuiteName() == test_suite_name) {
701 if (test_suite_info->GetTestSuiteTypeId() != GetTypeId<TestSuite>()) {
717 if (typed_test_info ==
nullptr) {
719 test_suite_name, code_location);
720 test_suite_infos_.push_back(typed_test_info);
722 return typed_test_info;
725 for (
auto& test_suite_info : test_suite_infos_) {
726 test_suite_info->RegisterTests();
730 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
731 template <
class TestCase>
733 const char* test_case_name,
CodeLocation code_location) {
734 return GetTestSuitePatternHolder<TestCase>(test_case_name, code_location);
740 using TestSuiteInfoContainer = ::std::vector<ParameterizedTestSuiteInfoBase*>;
742 TestSuiteInfoContainer test_suite_infos_;
750 class TypeParameterizedTestSuiteRegistry {
764 struct TypeParameterizedTestSuiteInfo {
766 : code_location(c), instantiated(false) {}
772 std::map<std::string, TypeParameterizedTestSuiteInfo> suites_;
779 template <
class Container>
780 internal::ParamGenerator<typename Container::value_type>
ValuesIn(
781 const Container& container);
787 #pragma warning(push)
788 #pragma warning(disable : 4100)
791 template <
typename... Ts>
796 template <
typename T>
802 template <
typename T,
size_t... I>
804 return std::vector<T>{
static_cast<T
>(v_.template Get<I>())...};
814 template <
typename... T>
815 class CartesianProductGenerator
816 :
public ParamGeneratorInterface<::std::tuple<T...>> {
825 return new Iterator(
this, generators_,
false);
828 return new Iterator(
this, generators_,
true);
834 template <
size_t... I>
841 begin_(std::get<I>(generators).begin()...),
842 end_(std::get<I>(generators).end()...),
843 current_(is_end ? end_ : begin_) {
844 ComputeCurrentValue();
846 ~IteratorImpl()
override {}
848 const ParamGeneratorInterface<ParamType>* BaseGenerator()
const override {
853 void Advance()
override {
856 ++std::get<
sizeof...(T) - 1>(current_);
858 AdvanceIfEnd<
sizeof...(T) - 1>();
859 ComputeCurrentValue();
861 ParamIteratorInterface<ParamType>* Clone()
const override {
862 return new IteratorImpl(*
this);
865 const ParamType* Current()
const override {
return current_value_.get(); }
867 bool Equals(
const ParamIteratorInterface<ParamType>& other)
const override {
871 <<
"The program attempted to compare iterators "
872 <<
"from different generators." << std::endl;
873 const IteratorImpl* typed_other =
874 CheckedDowncastToActualType<const IteratorImpl>(&other);
879 if (AtEnd() && typed_other->AtEnd())
return true;
883 (same = same && std::get<I>(current_) ==
884 std::get<I>(typed_other->current_))...};
890 template <
size_t ThisI>
891 void AdvanceIfEnd() {
892 if (std::get<ThisI>(current_) != std::get<ThisI>(end_))
return;
894 bool last = ThisI == 0;
900 constexpr
size_t NextI = ThisI - (ThisI != 0);
901 std::get<ThisI>(current_) = std::get<ThisI>(begin_);
902 ++std::get<NextI>(current_);
903 AdvanceIfEnd<NextI>();
906 void ComputeCurrentValue() {
908 current_value_ = std::make_shared<ParamType>(*std::get<I>(current_)...);
913 (at_end = at_end || std::get<I>(current_) == std::get<I>(end_))...};
918 const ParamGeneratorInterface<ParamType>*
const base_;
919 std::tuple<typename ParamGenerator<T>::iterator...> begin_;
920 std::tuple<typename ParamGenerator<T>::iterator...> end_;
921 std::tuple<typename ParamGenerator<T>::iterator...> current_;
922 std::shared_ptr<ParamType> current_value_;
927 std::tuple<ParamGenerator<T>...> generators_;
930 template <
class... Gen>
931 class CartesianProductHolder {
934 template <
typename... T>
941 std::tuple<Gen...> generators_;
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/gtest-message.h:91
std::string GetString() const
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/gtest.h:414
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/gtest.h:704
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:816
~CartesianProductGenerator() override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:822
ParamIteratorInterface< ParamType > * Begin() const override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:824
ParamIteratorInterface< ParamType > * End() const override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:827
::std::tuple< T... > ParamType
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:818
CartesianProductGenerator(const std::tuple< ParamGenerator< T >... > &g)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:820
CartesianProductHolder(const Gen &... g)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:933
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:183
iterator begin() const
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:195
ParamIterator< T > iterator
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:185
ParamGenerator(const ParamGenerator &other)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:188
ParamGenerator & operator=(const ParamGenerator &other)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:190
ParamGenerator(ParamGeneratorInterface< T > *impl)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:187
iterator end() const
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:196
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:166
T ParamType
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:168
virtual ~ParamGeneratorInterface()
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:170
virtual ParamIteratorInterface< T > * Begin() const =0
virtual ParamIteratorInterface< T > * End() const =0
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:123
T value_type
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:125
const T & operator*() const
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:137
ptrdiff_t difference_type
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:127
bool operator!=(const ParamIterator &other) const
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:153
ParamIterator & operator=(const ParamIterator &other)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:131
ParamIterator(const ParamIterator &other)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:130
const T * operator->() const
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:138
ParamIterator & operator++()
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:140
const T & reference
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:126
bool operator==(const ParamIterator &other) const
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:150
ParamIterator operator++(int)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:145
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:93
virtual const ParamGeneratorInterface< T > * BaseGenerator() const =0
virtual ParamIteratorInterface * Clone() const =0
virtual bool Equals(const ParamIteratorInterface &other) const =0
virtual ~ParamIteratorInterface()
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:95
virtual const T * Current() const =0
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:394
Test * CreateTest() override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:399
ParameterizedTestFactory(ParamType parameter)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:397
TestClass::ParamType ParamType
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:396
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:456
ParameterizedTestSuiteInfoBase()
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:471
virtual void RegisterTests()=0
virtual const std::string & GetTestSuiteName() const =0
virtual ~ParameterizedTestSuiteInfoBase()
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:458
virtual TypeId GetTestSuiteTypeId() const =0
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:496
typename TestSuite::ParamType ParamType
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:501
int AddTestSuiteInstantiation(const std::string &instantiation_name, GeneratorCreationFunc *func, ParamNameGeneratorFunc *name_func, const char *file, int line)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:530
std::string(const TestParamInfo< ParamType > &) ParamNameGeneratorFunc
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:504
const std::string & GetTestSuiteName() const override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:511
ParameterizedTestSuiteInfo(const char *name, CodeLocation code_location)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:506
void RegisterTests() override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:543
void AddTestPattern(const char *test_suite_name, const char *test_base_name, TestMetaFactoryBase< ParamType > *meta_factory, CodeLocation code_location)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:522
TypeId GetTestSuiteTypeId() const override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:515
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:684
ParameterizedTestCaseInfo< TestCase > * GetTestCasePatternHolder(const char *test_case_name, CodeLocation code_location)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:732
void RegisterTests()
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:724
ParameterizedTestSuiteInfo< TestSuite > * GetTestSuitePatternHolder(const char *test_suite_name, CodeLocation code_location)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:696
~ParameterizedTestSuiteRegistry()
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:687
ParameterizedTestSuiteRegistry()
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:686
ParamIteratorInterface< T > * Begin() const override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:214
RangeGenerator(T begin, T end, IncrementT step)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:209
~RangeGenerator() override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:212
ParamIteratorInterface< T > * End() const override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:217
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-internal.h:452
void RegisterTestSuite(const char *test_suite_name, CodeLocation code_location)
void CheckForInstantiations()
void RegisterInstantiation(const char *test_suite_name)
ValueArray(Ts... v)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:794
ParamIteratorInterface< T > * End() const override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:302
ParamIteratorInterface< T > * Begin() const override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:299
ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:295
~ValuesInIteratorRangeGenerator() override
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:297
#define GTEST_API_
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-port.h:775
#define GTEST_CHECK_(condition)
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-port.h:1004
void Abort()
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-port.h:2109
const void * TypeId
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-internal.h:417
GTEST_API_ void ReportInvalidTestSuiteType(const char *test_suite_name, CodeLocation code_location)
GTEST_API_ TestInfo * MakeAndRegisterTestInfo(const char *test_suite_name, const char *name, const char *type_param, const char *value_param, CodeLocation code_location, TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc, TearDownTestSuiteFunc tear_down_tc, TestFactoryBase *factory)
std::string DefaultParamName(const TestParamInfo< ParamType > &info)
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:376
void TestNotEmpty()
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:383
ParameterizedTestSuiteInfo< TestCase > ParameterizedTestCaseInfo
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:675
GTEST_API_ void InsertSyntheticTestCase(const std::string &name, CodeLocation location, bool has_test_p)
typename MakeIndexSequenceImpl< N >::type MakeIndexSequence
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-internal.h:1185
Derived * CheckedDowncastToActualType(Base *base)
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-port.h:1112
Definition: cmake-build-debug/googletest-src/googlemock/include/gmock/gmock-actions.h:154
internal::ParamGenerator< typename std::iterator_traits< ForwardIterator >::value_type > ValuesIn(ForwardIterator begin, ForwardIterator end)
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/gtest-param-test.h:294
::std::string PrintToString(const T &value)
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/gtest-printers.h:942
std::string operator()(const TestParamInfo< ParamType > &info) const
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:70
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:58
ParamType param
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:62
TestParamInfo(const ParamType &a_param, size_t an_index)
Definition: cmake-build-release/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:59
size_t index
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-param-util.h:63
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-internal.h:492
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-internal.h:1214
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-internal.h:1158
MarkAsIgnored(const char *test_suite)
Definition: cmake-build-debug/googletest-src/googletest/include/gtest/internal/gtest-internal.h:515