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_