Go to the documentation of this file.
35 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
36 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
54 template <
class ParamType>
66 template <
class ParamType>
82 CodeLocation code_location);
109 virtual const T*
Current()
const = 0;
119 template <
typename T>
151 return !(*
this == other);
157 std::unique_ptr<ParamIteratorInterface<T> >
impl_;
162 template <
typename T>
180 class ParamGenerator {
196 std::shared_ptr<const ParamGeneratorInterface<T> >
impl_;
203 template <
typename T,
typename IncrementT>
241 <<
"The program attempted to compare iterators "
242 <<
"from different generators." << std::endl;
243 const int other_index =
244 CheckedDowncastToActualType<const Iterator>(&other)->index_;
245 return index_ == other_index;
265 const IncrementT& step) {
267 for (
T i =
begin; i < end; i = static_cast<T>(
i + step))
288 template <
typename T>
291 template <
typename ForwardIterator>
309 typename ContainerType::const_iterator iterator)
338 <<
"The program attempted to compare iterators "
339 <<
"from different generators." << std::endl;
341 CheckedDowncastToActualType<const Iterator>(&other)->iterator_;
372 template <
class ParamType>
375 name_stream << info.
index;
384 template <
class ParamType,
class ParamNameGenFunctor>
389 template <
class ParamType>
394 template <
class ParamType>
403 template <
class TestClass>
411 return new TestClass();
424 template <
class ParamType>
440 template <
class TestSuite>
494 template <
class TestSuite>
523 tests_.push_back(std::shared_ptr<TestInfo>(
524 new TestInfo(test_suite_name, test_base_name, meta_factory)));
529 GeneratorCreationFunc*
func,
531 const char* file,
int line) {
542 for (
typename TestInfoContainer::iterator test_it =
tests_.begin();
543 test_it !=
tests_.end(); ++test_it) {
544 std::shared_ptr<TestInfo> test_info = *test_it;
545 for (
typename InstantiationContainer::iterator gen_it =
548 const std::string& instantiation_name = gen_it->name;
551 const char* file = gen_it->file;
552 int line = gen_it->line;
555 if ( !instantiation_name.empty() )
556 test_suite_name = instantiation_name +
"/";
557 test_suite_name += test_info->test_suite_base_name;
560 std::set<std::string> test_param_names;
563 param_it != generator.end(); ++param_it, ++
i) {
570 <<
"Parameterized test name '" << param_name
571 <<
"' is invalid, in " << file
572 <<
" line " << line << std::endl;
575 <<
"Duplicate parameterized test name '" << param_name
576 <<
"', in " << file <<
" line " << line << std::endl;
578 test_param_names.insert(param_name);
580 test_name_stream << test_info->test_base_name <<
"/" << param_name;
582 test_suite_name.c_str(), test_name_stream.
GetString().c_str(),
588 test_info->test_meta_factory->CreateTestFactory(*param_it));
598 TestInfo(
const char* a_test_suite_base_name,
const char* a_test_base_name,
614 GeneratorCreationFunc* generator_in,
655 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
656 template <
class TestCase>
658 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
671 delete test_suite_info;
677 template <
class TestSuite>
679 const char* test_suite_name,
CodeLocation code_location) {
682 if (test_suite_info->GetTestSuiteName() == test_suite_name) {
683 if (test_suite_info->GetTestSuiteTypeId() != GetTypeId<TestSuite>()) {
699 if (typed_test_info ==
nullptr) {
701 test_suite_name, code_location);
704 return typed_test_info;
708 test_suite_info->RegisterTests();
712 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
713 template <
class TestCase>
715 const char* test_case_name,
CodeLocation code_location) {
716 return GetTestSuitePatternHolder<TestCase>(test_case_name, code_location);
719 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
733 template <
class Container>
735 const Container& container);
740 template <
typename... Ts>
745 template <
typename T>
751 template <
typename T,
size_t... I>
753 return std::vector<T>{
static_cast<T>(
v_.template Get<I>())...};
762 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
GLuint const GLchar * name
ParamIteratorInterface< T > * Clone() const override
static int CalculateEndIndex(const T &begin, const T &end, const IncrementT &step)
ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
std::string operator()(const TestParamInfo< ParamType > &info) const
virtual bool Equals(const ParamIteratorInterface &other) const =0
bool operator==(const ParamIterator &other) const
std::string GetString() const
const std::string test_suite_base_name
ParameterizedTestFactory(ParamType parameter)
ParamIterator & operator=(const ParamIterator &other)
~ValuesInIteratorRangeGenerator() override
GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteRegistry)
ParamIteratorInterface< T > * Begin() const override
void operator=(const ValuesInIteratorRangeGenerator &other)
TypeId GetTestSuiteTypeId() const override
std::string Type(const TestParamInfo< ParamType > &)
ParamIterator< T > iterator
const T * Current() const override
GTEST_API_ void ReportInvalidTestSuiteType(const char *test_suite_name, CodeLocation code_location)
Iterator(const ParamGeneratorInterface< T > *base, T value, int index, IncrementT step)
GLsizei const GLchar *const * string
const ParamType parameter_
ParamIteratorInterface< T > * Clone() const override
const std::string test_base_name
GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteInfoBase)
const std::unique_ptr< TestMetaFactoryBase< ParamType > > test_meta_factory
#define T(upbtypeconst, upbtype, ctype, default_value)
GeneratorCreationFunc * generator
const ParamGeneratorInterface< T > *const base_
const std::string & GetTestSuiteName() const override
const T & operator*() const
ptrdiff_t difference_type
::std::vector< InstantiationInfo > InstantiationContainer
ParamGenerator(const ParamGenerator &other)
static size_t begin(const upb_table *t)
InstantiationContainer instantiations_
const T * operator->() const
virtual ~ParamIteratorInterface()
TestInfo(const char *a_test_suite_base_name, const char *a_test_base_name, TestMetaFactoryBase< ParamType > *a_test_meta_factory)
ParamIteratorInterface< T > * End() const override
#define GTEST_CHECK_(condition)
~ParameterizedTestSuiteRegistry()
typename TestSuite::ParamType ParamType
const ContainerType container_
CodeLocation code_location_
virtual const T * Current() const =0
TestSuiteInfoContainer test_suite_infos_
const ParamGeneratorInterface< T > * BaseGenerator() const override
ParamGenerator(ParamGeneratorInterface< T > *impl)
virtual ~ParameterizedTestSuiteInfoBase()
virtual void RegisterTests()=0
void AddTestPattern(const char *test_suite_name, const char *test_base_name, TestMetaFactoryBase< ParamType > *meta_factory)
std::shared_ptr< const ParamGeneratorInterface< T > > impl_
GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteInfo)
~RangeGenerator() override
ParameterizedTestSuiteRegistry()
const typedef T & reference
bool operator!=(const ParamIterator &other) const
ParamIterator(const ParamIterator &other)
Iterator(const Iterator &other)
ParamIterator operator++(int)
const typedef void * TypeId
Iterator(const ParamGeneratorInterface< T > *base, typename ContainerType::const_iterator iterator)
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)
InstantiationInfo(const std::string &name_in, GeneratorCreationFunc *generator_in, ParamNameGeneratorFunc *name_func_in, const char *file_in, int line_in)
ParamNameGeneratorFunc * name_func
::std::vector< T > ContainerType
virtual ~ParamGeneratorInterface()
::std::vector< std::shared_ptr< TestInfo > > TestInfoContainer
RangeGenerator(T begin, T end, IncrementT step)
::std::vector< ParameterizedTestSuiteInfoBase * > TestSuiteInfoContainer
ParameterizedTestSuiteInfo(const char *name, CodeLocation code_location)
bool Equals(const ParamIteratorInterface< T > &other) const override
bool Equals(const ParamIteratorInterface< T > &other) const override
const std::string test_suite_name_
const T * Current() const override
void RegisterTests() override
virtual ParamIteratorInterface * Clone() const =0
ParameterizedTestSuiteInfo< TestSuite > * GetTestSuitePatternHolder(const char *test_suite_name, CodeLocation code_location)
void operator=(const RangeGenerator &other)
Derived * CheckedDowncastToActualType(Base *base)
ParamIterator(ParamIteratorInterface< T > *impl)
GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory)
std::unique_ptr< ParamIteratorInterface< T > > impl_
ParameterizedTestSuiteInfoBase()
virtual ParamIteratorInterface< T > * End() const =0
std::vector< T > MakeVector(IndexSequence< I... >) const
ParamNameGenFunc< ParamType >::Type ParamNameGeneratorFunc
ParamGenerator & operator=(const ParamGenerator &other)
const ParamGeneratorInterface< T > * BaseGenerator() const override
ParamIteratorInterface< T > * End() const override
virtual const ParamGeneratorInterface< T > * BaseGenerator() const =0
ParamIterator & operator++()
std::unique_ptr< const T > value_
Iterator(const Iterator &other)
std::string DefaultParamName(const TestParamInfo< ParamType > &info)
TestParamInfo(const ParamType &a_param, size_t an_index)
GLsizei const GLfloat * value
ParameterizedTestCaseInfo< TestCase > * GetTestCasePatternHolder(const char *test_case_name, CodeLocation code_location)
ContainerType::const_iterator iterator_
ParamIteratorInterface< T > * Begin() const override
ParamNameGenFunctor GetParamNameGen(ParamNameGenFunctor func)
virtual TypeId GetTestSuiteTypeId() const =0
internal::ParamGenerator< typename ::testing::internal::IteratorTraits< ForwardIterator >::value_type > ValuesIn(ForwardIterator begin, ForwardIterator end)
Test * CreateTest() override
void operator=(const Iterator &other)
static bool IsValidParamName(const std::string &name)
const ParamGeneratorInterface< T > *const base_
virtual ParamIteratorInterface< T > * Begin() const =0
int AddTestSuiteInstantiation(const std::string &instantiation_name, GeneratorCreationFunc *func, ParamNameGeneratorFunc *name_func, const char *file, int line)
TestClass::ParamType ParamType
virtual const std::string & GetTestSuiteName() const =0
::std::string PrintToString(const T &value)
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:53