15 #ifndef INCG_IRIS_IUTEST_PARAM_TESTS_HPP_3DBBF55E_A076_4207_B49E_34734EE333EE_
16 #define INCG_IRIS_IUTEST_PARAM_TESTS_HPP_3DBBF55E_A076_4207_B49E_34734EE333EE_
22 #if IUTEST_HAS_PARAM_TEST
40 #if IUTEST_HAS_PARAM_TEST_PARAM_NAME_GENERATOR
41 # define IUTEST_INSTANTIATE_TEST_CASE_P(prefix_, testfixture_, generator_, ...) \
42 IIUT_INSTANTIATE_TEST_CASE_P_(prefix_, testfixture_, generator_, __VA_ARGS__)
44 # define IUTEST_INSTANTIATE_TEST_CASE_P(prefix_, testfixture_, generator_) \
45 IIUT_INSTANTIATE_TEST_CASE_P_(prefix_, testfixture_, generator_)
59 #define IUTEST_P(testfixture_, testname_) IUTEST_TEST_P_(testfixture_, testname_)
62 #if IUTEST_HAS_ANY_PARAM_TEST
72 #define IUTEST_INSTANTIATE_TEST_CASE_AP(prefix_, testcase_, generator_) \
73 IIUT_INSTANTIATE_TEST_CASE_AP_(prefix_, testcase_, generator_)
85 #define IUTEST_AP(testcase_, testname_) \
86 IUTEST_TEST_AP_(testcase_, testname_)
96 #if !defined(IUTEST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS)
97 # define IIUT_GETTESTCASEPATTERNHOLDER(T, testcase_, package_) \
98 ::iutest::UnitTest::GetInstance()->parameterized_test_registry( \
99 ).GetTestCasePatternHolder<T>(testcase_, package_)
101 # define IIUT_GETTESTCASEPATTERNHOLDER(T, testcase_, package_) \
102 ::iutest::UnitTest::GetInstance()->parameterized_test_registry( \
103 ).GetTestCasePatternHolder(testcase_, package_, ::iutest::detail::explicit_type<T>())
106 #if IUTEST_HAS_AUTOFIXTURE_PARAM_TEST
107 # if IUTEST_HAS_IF_EXISTS
108 # define IIUT_TEST_P_FIXTURE_DECL_(testcase_) IIUT_TEST_P_FIXTURE_DECL_I(IIUT_TO_VARNAME_(testcase_))
109 # define IIUT_TEST_P_FIXTURE_DECL_I(testcase_) IUTEST_IF_NOT_EXISTS(testcase_, typedef ::iutest::TestWithAny testcase_;)
110 # define IIUT_TEST_P_BASE_FIXTURE(testcase_) IIUT_TO_VARNAME_(testcase_)
112 # define IIUT_TEST_P_FIXTURE_DECL_(testcase_)
113 # if !defined(IUTEST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
114 # define IIUT_TEST_P_BASE_FIXTURE(testcase_) \
115 ::iutest::detail::paramtest_select_base_testcase< void (int (IIUT_TO_VARNAME_(testcase_))) >::type
117 # define IIUT_TEST_P_BASE_FIXTURE(testcase_) IIUT_TO_VARNAME_(testcase_)
121 # define IIUT_TEST_P_FIXTURE_DECL_(testcase_)
122 # define IIUT_TEST_P_BASE_FIXTURE(testcase_) IIUT_TO_VARNAME_(testcase_)
128 #if IUTEST_HAS_PARAM_TEST_PARAM_NAME_GENERATOR
129 # define IIUT_INSTANTIATE_TEST_CASE_P_(prefix_, testcase_, generator_, ...) \
130 IIUT_INSTANTIATE_TEST_CASE_P_I(prefix_, testcase_, generator_, GetParamNameGen(__VA_ARGS__))
132 # define IIUT_INSTANTIATE_TEST_CASE_P_(prefix_, testcase_, generator_) \
133 IIUT_INSTANTIATE_TEST_CASE_P_I(prefix_, testcase_, generator_, GetParamNameGen())
136 #if IUTEST_HAS_TESTFIXTURE_ALIAS_BY_TUPLE
138 #define IIUT_INSTANTIATE_TEST_CASE_P_I(prefix_, testcase_, generator_, paramname_generator_) \
139 IIUT_INSTANTIATE_TEST_CASE_P_II(prefix_, IUTEST_PP_IF( IUTEST_PP_IS_BEGIN_PARENS(testcase_) \
140 , IUTEST_ALIAS_TESTNAME_F_, IUTEST_PP_EMPTY() ) testcase_, generator_, paramname_generator_)
144 #define IIUT_INSTANTIATE_TEST_CASE_P_I(prefix_, testcase_, generator_, paramname_generator_) \
145 IIUT_INSTANTIATE_TEST_CASE_P_II(prefix_, testcase_, generator_, paramname_generator_)
149 #define IIUT_INSTANTIATE_TEST_CASE_P_II(prefix_, testcase_, generator_, paramname_generator_) \
150 IIUT_INSTANTIATE_TEST_CASE_P_III(prefix_, testcase_, IIUT_TEST_P_BASE_FIXTURE(testcase_) \
151 , generator_, paramname_generator_)
154 #define IIUT_INSTANTIATE_TEST_CASE_P_III(prefix_, testcase_, basefixture_, generator_, paramname_generator_) \
155 IIUT_TEST_P_FIXTURE_DECL_(testcase_) \
156 static ::iutest::detail::iuIParamGenerator< basefixture_::ParamType >* \
157 IIUT_TEST_P_EVALGENERATOR_NAME_(prefix_, testcase_)() { return generator_; } \
158 static ::std::string IIUT_TEST_P_PARAMGENERATOR_NAME_(prefix_, testcase_)( \
159 const ::iutest::TestParamInfo< basefixture_::ParamType >& info) { return \
160 ::iutest::detail::ParamTestCaseInfo< basefixture_ >::paramname_generator_(info); } \
161 int IIUT_TEST_P_INSTANTIATIONREGISTER_NAME_(prefix_, testcase_)() { \
162 ::iutest::detail::ParamTestCaseInfo< basefixture_ >* p = IIUT_GETTESTCASEPATTERNHOLDER( \
163 basefixture_, IIUT_TO_NAME_STR_(testcase_), IUTEST_GET_PACKAGENAME_()); \
164 return p->AddTestCaseInstantiation(#prefix_ \
165 , IIUT_TEST_P_EVALGENERATOR_NAME_(prefix_, testcase_) \
166 , IIUT_TEST_P_PARAMGENERATOR_NAME_(prefix_, testcase_) ); \
167 } IIUT_TEST_P_INSTANTIATIONREGISTER_(prefix_, testcase_)
172 #define IIUT_TEST_P_I_(classname_, testcase_, testcasename_, testname_) \
173 IIUT_TEST_P_FIXTURE_DECL_(testcase_) \
174 class classname_ : public testcase_ { \
175 public: classname_() {} \
176 protected: virtual void Body() IUTEST_CXX_OVERRIDE; \
177 private: static int AddRegister() { \
178 static ::iutest::detail::ParamTestInstance< classname_ > testinfo(testname_); \
179 IIUT_GETTESTCASEPATTERNHOLDER(testcase_, testcasename_ \
180 , IUTEST_GET_PACKAGENAME_())->AddTestPattern(&testinfo); return 0; \
183 IUTEST_PP_DISALLOW_COPY_AND_ASSIGN(classname_); \
185 int classname_::dummy_ IUTEST_ATTRIBUTE_UNUSED_ = classname_::AddRegister(); \
186 void classname_::Body()
188 #if IUTEST_HAS_IGNORE_TEST
190 #define IIUT_TEST_P_I_IGNORE_(classname_, testcase_, testcasename_, testname_) \
191 class classname_ : public testcase_ { \
192 public: classname_() {} \
193 protected: virtual void Body() IUTEST_CXX_OVERRIDE { IUTEST_SKIP() << "ignored test..."; } \
194 template<typename T>void Body(); \
195 private: static int AddRegister() { \
196 static ::iutest::detail::ParamTestInstance< classname_ > testinfo(testname_); \
197 IIUT_GETTESTCASEPATTERNHOLDER(testcase_, testcasename_ \
198 , IUTEST_GET_PACKAGENAME_())->AddTestPattern(&testinfo); return 0; \
201 IUTEST_PP_DISALLOW_COPY_AND_ASSIGN(classname_); \
203 int classname_::dummy_ IUTEST_ATTRIBUTE_UNUSED_ = classname_::AddRegister(); \
204 template<typename T>void classname_::Body()
208 #define IIUT_TEST_P_(macro, testcase_, testname_) \
209 macro(IUTEST_TEST_CLASS_NAME_(testcase_, testname_) \
210 , IIUT_TEST_P_BASE_FIXTURE(testcase_) \
211 , IIUT_TO_NAME_STR_(testcase_), IIUT_TO_NAME_STR_(testname_))
213 #if IUTEST_HAS_TESTFIXTURE_ALIAS_BY_TUPLE
215 #define IIUT_TEST_P_A_(macro, testcase_, testname_) \
216 IIUT_TEST_P_( macro, IUTEST_PP_IF( IUTEST_PP_IS_BEGIN_PARENS(testcase_) \
217 , IUTEST_ALIAS_TESTNAME_F_, IUTEST_PP_EMPTY() ) testcase_, testname_)
219 #define IUTEST_TEST_P_(testcase_, testname_) \
220 IIUT_TEST_P_A_(IIUT_TEST_P_I_, testcase_, testname_)
222 #if IUTEST_HAS_IGNORE_TEST
224 #define IUTEST_TEST_P_IGNORE_(testcase_, testname_) \
225 IIUT_TEST_P_A_(IIUT_TEST_P_I_IGNORE_, testcase_, testname_)
231 #define IUTEST_TEST_P_(testcase_, testname_) \
232 IIUT_TEST_P_(IIUT_TEST_P_I_, testcase_, testname_)
234 #if IUTEST_HAS_IGNORE_TEST
236 #define IUTEST_TEST_P_IGNORE_(testcase_, testname_) \
237 IIUT_TEST_P_(IIUT_TEST_P_I_IGNORE_, testcase_, testname_)
243 #define IIUT_TEST_AP_FIXTURE_NAME_(testcase_) IUTEST_PP_CAT(iuTestWithAny, testcase_)
244 #define IIUT_ALIAS_TESTNAME_AP_(testcase_) IUTEST_ALIAS_TESTNAME_F(testcase_, IIUT_TEST_AP_FIXTURE_NAME_(testcase_))
246 #define IUTEST_TEST_AP_(testcase_, testname_) \
247 typedef ::iutest::TestWithAny IIUT_TEST_AP_FIXTURE_NAME_(testcase_); \
248 IUTEST_TEST_P_(IIUT_ALIAS_TESTNAME_AP_(testcase_), testname_)
250 #define IIUT_INSTANTIATE_TEST_CASE_AP_(prefix_, testcase_, generator_) \
251 IIUT_INSTANTIATE_TEST_CASE_P_(prefix_, IIUT_ALIAS_TESTNAME_AP_(testcase_), generator_)
254 #define IIUT_TEST_P_EVALGENERATOR_NAME_(prefix_, testcase_) IIUT_TEST_P_EVALGENERATOR_NAME_I(prefix_, IIUT_TO_VARNAME_(testcase_))
255 #define IIUT_TEST_P_EVALGENERATOR_NAME_I(prefix_, testcase_) IIUT_TEST_P_EVALGENERATOR_NAME_I_(prefix_, testcase_)
256 #define IIUT_TEST_P_EVALGENERATOR_NAME_I_(prefix_, testcase_) s_##prefix_##_x_iutest_x_##testcase_##_EvalGenerator_
258 #define IIUT_TEST_P_PARAMGENERATOR_NAME_(prefix_, testcase_) IIUT_TEST_P_PARAMGENERATOR_NAME_I(prefix_, IIUT_TO_VARNAME_(testcase_))
259 #define IIUT_TEST_P_PARAMGENERATOR_NAME_I(prefix_, testcase_) IIUT_TEST_P_PARAMGENERATOR_NAME_I_(prefix_, testcase_)
260 #define IIUT_TEST_P_PARAMGENERATOR_NAME_I_(prefix_, testcase_) s_##prefix_##_x_iutest_x_##testcase_##_ParamGenerator_
262 #define IIUT_TEST_P_INSTANTIATIONREGISTER_NAME_(prefix_, testcase_) IIUT_TEST_P_INSTANTIATIONREGISTER_NAME_I(prefix_, IIUT_TO_VARNAME_(testcase_))
263 #define IIUT_TEST_P_INSTANTIATIONREGISTER_NAME_I(prefix_, testcase_) IIUT_TEST_P_INSTANTIATIONREGISTER_NAME_I_(prefix_, testcase_)
264 #define IIUT_TEST_P_INSTANTIATIONREGISTER_NAME_I_(prefix_, testcase_) prefix_##_x_iutest_x_##testcase_##_TestCaseInstantiationRegister
266 #define IIUT_TEST_P_INSTANTIATIONREGISTER_(prefix_, testcase_) \
267 IIUT_TEST_P_INSTANTIATIONREGISTER_I(prefix_, IIUT_TO_VARNAME_(testcase_), IIUT_TEST_P_INSTANTIATIONREGISTER_NAME_(prefix_, testcase_))
268 #define IIUT_TEST_P_INSTANTIATIONREGISTER_I(prefix_, testcase_, register_) IIUT_TEST_P_INSTANTIATIONREGISTER_I_(prefix_, testcase_, register_)
269 #define IIUT_TEST_P_INSTANTIATIONREGISTER_I_(prefix_, testcase_, register_) int s_##prefix_##_x_iutest_x_##testcase_##_dummy = register_()
286 class ParamTestInstance :
public IParamTestInfoData
289 typedef typename Tester::ParamType ParamType;
290 typedef detail::iuParamTestFactory<T> Factory;
293 class EachTest
IUTEST_CXX_FINAL :
public IParamTestInfoData::ParamEachTestBase<ParamType>
296 EachTest(TestCase* testcase, const ::std::string& name)
297 : m_mediator(testcase)
298 , m_info(&m_mediator, name, &m_factory)
300 UnitTest::instance().AddTestInfo(testcase, &m_info);
305 m_factory.SetParam(param);
309 TestCaseMediator m_mediator;
314 explicit ParamTestInstance(
const char* testcase_name) : IParamTestInfoData(testcase_name) {}
318 virtual TestCase* MakeTestCase(const ::std::string& testcase_name,
TestTypeId id
321 #if !defined(IUTEST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS)
322 return UnitTest::instance().AddTestCase<TestCase>(testcase_name, id, setup, teardown);
324 return UnitTest::instance().AddTestCase(
325 testcase_name,
id, setup, teardown, detail::explicit_type<TestCase>());
330 virtual IParamTestInfoData::EachTestBase* RegisterTest(TestCase* testcase
333 EachTest* test =
new EachTest(testcase, name);
335 detail::iuPool::GetInstance().push(test);
346 class TestWithAny :
public Test,
public WithParamInterface<any>
361 #if !defined(IUTEST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
369 struct paramtest_select_base_testcase;
372 struct paramtest_select_base_testcase< void(int) >
377 struct paramtest_select_base_testcase< void(int (T)) >
399 detail::iuParamGenerator<T> IUTEST_ATTRIBUTE_UNUSED_
Range(T begin, T end, T step=
static_cast<T
>(1))
401 return new detail::iuRangeParamsGenerator<T>(begin, end, step);
407 inline detail::iuParamGenerator<bool> IUTEST_ATTRIBUTE_UNUSED_
Bool()
409 return new detail::iuBoolParamsGenerator();
412 #if IUTEST_HAS_VALUESGEN
418 template<
typename StdGenerator>
419 inline detail::iuValuesParamsGeneratorHolder<StdGenerator> IUTEST_ATTRIBUTE_UNUSED_
ValuesGen(
size_t num,
const StdGenerator& generator)
421 return detail::iuValuesParamsGeneratorHolder<StdGenerator>(num, generator);
430 template<
typename T,
typename Filter>
431 inline detail::iuRandomFilterParamGenerator<T, Filter> IUTEST_ATTRIBUTE_UNUSED_
RandomGenerator(
const Filter& filter,
unsigned int seed=0)
435 seed = detail::GetIndefiniteValue();
437 return detail::iuRandomFilterParamGenerator<T, Filter>(filter, seed);
442 #if IUTEST_HAS_RANDOMVALUES
446 inline detail::iuRandomParamsHolder IUTEST_ATTRIBUTE_UNUSED_ RandomValues(
size_t num,
unsigned int seed=0)
448 return detail::iuRandomParamsHolder(num, seed);
455 template<
typename Container>
456 inline detail::iuParamGenerator< typename Container::value_type > IUTEST_ATTRIBUTE_UNUSED_
ValuesIn(Container container)
458 return new detail::iuValuesInParamsGenerator< typename Container::value_type >(container);
461 #if !defined(IUTEST_NO_FUNCTION_TEMPLATE_ORDERING)
463 template<
typename T,
size_t SIZE>
464 inline detail::iuParamGenerator<T> IUTEST_ATTRIBUTE_UNUSED_
ValuesIn(
const T (&v)[SIZE])
466 return new detail::iuValuesInParamsGenerator<T>(v, v+SIZE);
469 #if !defined(IUTEST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
471 template<
typename Ite>
472 inline detail::iuParamGenerator< typename detail::IteratorTraits<Ite>::type > IUTEST_ATTRIBUTE_UNUSED_
ValuesIn(Ite begin, Ite end)
474 return new detail::iuValuesInParamsGenerator<
475 typename detail::IteratorTraits<Ite>::type >(begin, end);
479 #if IUTEST_HAS_INITIALIZER_LIST
482 inline detail::iuParamGenerator<T> IUTEST_ATTRIBUTE_UNUSED_
ValuesIn(::std::initializer_list<T> l)
484 return new detail::iuValuesInParamsGenerator<T>(l);
490 #if IUTEST_HAS_VARIADIC_VALUES
494 template<
typename ...Args>
495 inline detail::iuValueArray<Args...> IUTEST_ATTRIBUTE_UNUSED_ Values(Args... args)
497 return detail::iuValueArray<Args...>(args...);
502 #define IIUT_DECL_VALUES_(n) template< IUTEST_PP_ENUM_PARAMS(n, typename T) > \
503 inline detail::iuValueArray##n< IUTEST_PP_ENUM_PARAMS(n, T) > \
504 IUTEST_ATTRIBUTE_UNUSED_ Values( IUTEST_PP_ENUM_BINARY_PARAMS(n, T, t) ) { \
505 return detail::iuValueArray##n< IUTEST_PP_ENUM_PARAMS(n, T) >( IUTEST_PP_ENUM_PARAMS(n, t) ); \
521 IIUT_DECL_VALUES_(10)
522 IIUT_DECL_VALUES_(11)
523 IIUT_DECL_VALUES_(12)
524 IIUT_DECL_VALUES_(13)
525 IIUT_DECL_VALUES_(14)
526 IIUT_DECL_VALUES_(15)
527 IIUT_DECL_VALUES_(16)
528 IIUT_DECL_VALUES_(17)
529 IIUT_DECL_VALUES_(18)
530 IIUT_DECL_VALUES_(19)
531 IIUT_DECL_VALUES_(20)
532 IIUT_DECL_VALUES_(21)
533 IIUT_DECL_VALUES_(22)
534 IIUT_DECL_VALUES_(23)
535 IIUT_DECL_VALUES_(24)
536 IIUT_DECL_VALUES_(25)
537 IIUT_DECL_VALUES_(26)
538 IIUT_DECL_VALUES_(27)
539 IIUT_DECL_VALUES_(28)
540 IIUT_DECL_VALUES_(29)
541 IIUT_DECL_VALUES_(30)
542 IIUT_DECL_VALUES_(31)
543 IIUT_DECL_VALUES_(32)
544 IIUT_DECL_VALUES_(33)
545 IIUT_DECL_VALUES_(34)
546 IIUT_DECL_VALUES_(35)
547 IIUT_DECL_VALUES_(36)
548 IIUT_DECL_VALUES_(37)
549 IIUT_DECL_VALUES_(38)
550 IIUT_DECL_VALUES_(39)
551 IIUT_DECL_VALUES_(40)
552 IIUT_DECL_VALUES_(41)
553 IIUT_DECL_VALUES_(42)
554 IIUT_DECL_VALUES_(43)
555 IIUT_DECL_VALUES_(44)
556 IIUT_DECL_VALUES_(45)
557 IIUT_DECL_VALUES_(46)
558 IIUT_DECL_VALUES_(47)
559 IIUT_DECL_VALUES_(48)
560 IIUT_DECL_VALUES_(49)
561 IIUT_DECL_VALUES_(50)
563 #undef IIUT_DECL_VALUES_
567 #if IUTEST_HAS_CONCAT
571 template<
typename Generator1,
typename Generator2>
572 detail::iuConcatParamHolder<Generator1, Generator2>
Concat(
const Generator1& g1,
const Generator2& g2)
574 return detail::iuConcatParamHolder<Generator1, Generator2>(g1, g2);
578 #if IUTEST_HAS_COMBINE
580 #if IUTEST_HAS_VARIADIC_COMBINE
584 template<
typename ...Generator>
585 detail::iuCartesianProductHolder<Generator...> Combine(
const Generator&... generators)
587 return detail::iuCartesianProductHolder<Generator...>(generators...);
592 #define IIUT_DECL_COMBINE_(n) template< IUTEST_PP_ENUM_PARAMS(n, typename T) > \
593 inline IUTEST_PP_CAT(detail::iuCartesianProductHolder, n)< IUTEST_PP_ENUM_PARAMS(n, T) > \
594 Combine(IUTEST_PP_ENUM_BINARY_PARAMS(n, const T, &t)) { \
595 return IUTEST_PP_CAT(detail::iuCartesianProductHolder, n) \
596 < IUTEST_PP_ENUM_PARAMS(n, T) >(IUTEST_PP_ENUM_PARAMS(n, t)); \
603 IIUT_DECL_COMBINE_(2)
604 IIUT_DECL_COMBINE_(3)
605 IIUT_DECL_COMBINE_(4)
606 IIUT_DECL_COMBINE_(5)
607 IIUT_DECL_COMBINE_(6)
608 IIUT_DECL_COMBINE_(7)
609 IIUT_DECL_COMBINE_(8)
610 IIUT_DECL_COMBINE_(9)
612 #undef IIUT_DECL_COMBINE_
618 #if IUTEST_HAS_PAIRWISE
620 #if IUTEST_HAS_VARIADIC_PAIRWISE
625 template<
typename ...Generator>
626 detail::iuPairwiseHolder<Generator...> Pairwise(
const Generator&... generators)
628 return detail::iuPairwiseHolder<Generator...>(generators...);
633 #define IIUT_DECL_PAIRWISE_(n) template< IUTEST_PP_ENUM_PARAMS(n, typename T) > \
634 inline IUTEST_PP_CAT(detail::iuPairwiseHolder, n)< IUTEST_PP_ENUM_PARAMS(n, T) > \
635 Pairwise(IUTEST_PP_ENUM_BINARY_PARAMS(n, const T, &t)) { \
636 return IUTEST_PP_CAT(detail::iuPairwiseHolder, n) \
637 < IUTEST_PP_ENUM_PARAMS(n, T) >(IUTEST_PP_ENUM_PARAMS(n, t)); \
644 IIUT_DECL_PAIRWISE_(2)
645 IIUT_DECL_PAIRWISE_(3)
646 IIUT_DECL_PAIRWISE_(4)
647 IIUT_DECL_PAIRWISE_(5)
648 IIUT_DECL_PAIRWISE_(6)
649 IIUT_DECL_PAIRWISE_(7)
650 IIUT_DECL_PAIRWISE_(8)
651 IIUT_DECL_PAIRWISE_(9)
653 #undef IIUT_DECL_PAIRWISE__
659 #if IUTEST_HAS_CSVPARAMS
665 detail::iuParamGenerator<T> IUTEST_ATTRIBUTE_UNUSED_ CSV(
const char* path,
char delimiter =
',')
667 return new detail::iuCsvFileParamsGenerator<T>(path, delimiter);
671 detail::iuParamGenerator<T> IUTEST_ATTRIBUTE_UNUSED_ CSV(
const char* relative_path,
const char* test_file,
char delimiter =
',')
673 const char* sep = detail::FindLastPathSeparator(test_file, strlen(test_file));
677 const size_t length = ::std::distance(test_file, sep);
678 path += ::std::string(test_file, length);
679 path += detail::GetPathSeparator();
681 path += relative_path;
682 return new detail::iuCsvFileParamsGenerator<T>(path, delimiter);
693 #if IUTEST_HAS_ANY_PARAM_TEST
701 #endif // IUTEST_HAS_PARAM_TEST
703 #endif // INCG_IRIS_IUTEST_PARAM_TESTS_HPP_3DBBF55E_A076_4207_B49E_34734EE333EE_