16 #ifndef INCLUDE_NN_NLIB_TESTING_PARAMTYPE_H_ 17 #define INCLUDE_NN_NLIB_TESTING_PARAMTYPE_H_ 21 #include "nn/nlib/testing/ParamTypeTypes.h" 26 template <
template <
class Tmpl>
class TEST_CASE,
class LIST>
29 static bool AddTestInfo(
const char* test_case,
const char* test_name,
int index) {
32 typedef typename LIST::Head T;
33 typedef typename LIST::Tail TL;
34 typedef TEST_CASE<T> TestCaseType;
36 ::nlib_ns::testing::TestInfo::AddTestInfo<TestCaseType>(test_case, test_name, index,
37 TestCaseType::SetUpTestCase,
38 TestCaseType::TearDownTestCase);
39 return TypedTestLoop<TEST_CASE, TL>::AddTestInfo(test_case, test_name, index + 1);
43 template <
template <
class Tmpl>
class TEST_CASE>
44 class TypedTestLoop<TEST_CASE, Tp0> {
46 static bool AddTestInfo(
const char* test_case,
const char* test_name,
int index) {
47 NLIB_UNUSED(test_case);
48 NLIB_UNUSED(test_name);
54 #define NLIB_TESTING_TYPELIST(test_case) ntest_type_params_##test_case##_ 59 #define TYPED_TEST_CASE(test_case, types) typedef types::type NLIB_TESTING_TYPELIST(test_case) 61 #define TYPED_TEST(test_case, test_name) \ 63 class NLIB_TESTING_CLASS_NAME_(test_case, test_name) \ 64 : public test_case<T> { \ 66 typedef test_case<T> TestFixture; \ 67 typedef T TypeParam; \ 68 NLIB_TESTING_CLASS_NAME_(test_case, test_name)() {} \ 70 virtual void TestBody(); \ 71 NLIB_DISALLOW_COPY_AND_ASSIGN(NLIB_TESTING_CLASS_NAME_(test_case, test_name)); \ 73 bool ntest_typed_test_##test_case##test_name##_ = ::nlib_ns::testing::TypedTestLoop< \ 74 NLIB_TESTING_CLASS_NAME_(test_case, test_name), \ 75 NLIB_TESTING_TYPELIST(test_case)>::AddTestInfo(#test_case, #test_name, 1); \ 77 void NLIB_TESTING_CLASS_NAME_(test_case, test_name)<T>::TestBody() 79 #endif // INCLUDE_NN_NLIB_TESTING_PARAMTYPE_H_