3 #ifndef INCLUDE_NN_NLIB_TESTING_PARAMTYPE_H_
4 #define INCLUDE_NN_NLIB_TESTING_PARAMTYPE_H_
8 #include "nn/nlib/testing/ParamTypeTypes.h"
13 template <
template <
class Tmpl>
class TEST_CASE,
class LIST>
16 static bool AddTestInfo(
const char* test_case,
const char* test_name,
int index) {
19 typedef typename LIST::Head T;
20 typedef typename LIST::Tail TL;
21 typedef TEST_CASE<T> TestCaseType;
23 ::nlib_ns::testing::TestInfo::AddTestInfo<TestCaseType>(test_case, test_name, index,
24 TestCaseType::SetUpTestCase,
25 TestCaseType::TearDownTestCase);
26 return TypedTestLoop<TEST_CASE, TL>::AddTestInfo(test_case, test_name, index + 1);
30 template <
template <
class Tmpl>
class TEST_CASE>
31 class TypedTestLoop<TEST_CASE, Tp0> {
33 static bool AddTestInfo(
const char* test_case,
const char* test_name,
int index) {
34 NLIB_UNUSED(test_case);
35 NLIB_UNUSED(test_name);
41 #define NLIB_TESTING_TYPELIST(test_case) ntest_type_params_##test_case##_
46 #define TYPED_TEST_CASE(test_case, types) typedef types::type NLIB_TESTING_TYPELIST(test_case)
48 #define TYPED_TEST(test_case, test_name) \
50 class NLIB_TESTING_CLASS_NAME_(test_case, test_name) \
51 : public test_case<T> { \
53 typedef test_case<T> TestFixture; \
54 typedef T TypeParam; \
55 NLIB_TESTING_CLASS_NAME_(test_case, test_name)() {} \
57 virtual void TestBody(); \
58 NLIB_DISALLOW_COPY_AND_ASSIGN(NLIB_TESTING_CLASS_NAME_(test_case, test_name)); \
60 bool ntest_typed_test_##test_case##test_name##_ = ::nlib_ns::testing::TypedTestLoop< \
61 NLIB_TESTING_CLASS_NAME_(test_case, test_name), \
62 NLIB_TESTING_TYPELIST(test_case)>::AddTestInfo(#test_case, #test_name, 1); \
64 void NLIB_TESTING_CLASS_NAME_(test_case, test_name)<T>::TestBody()
66 #endif // INCLUDE_NN_NLIB_TESTING_PARAMTYPE_H_