15 #ifndef HWY_TESTS_HWY_GTEST_H_
16 #define HWY_TESTS_HWY_GTEST_H_
26 #include "gtest/gtest.h"
33 #ifdef INSTANTIATE_TEST_SUITE_P
34 #define HWY_GTEST_INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_SUITE_P
36 #define HWY_GTEST_INSTANTIATE_TEST_SUITE_P INSTANTIATE_TEST_CASE_P
54 #if (HWY_TARGETS & (HWY_TARGETS - 1)) != 0
56 <<
"This hwy target parametric test doesn't use dynamic-dispatch and "
57 "doesn't need to be parametric.";
66 const testing::TestParamInfo<uint32_t>&
info) {
70 #define HWY_TARGET_INSTANTIATE_TEST_SUITE_P(suite) \
71 HWY_GTEST_INSTANTIATE_TEST_SUITE_P( \
72 suite##Group, suite, \
73 testing::ValuesIn(::hwy::SupportedAndGeneratedTargets()), \
74 ::hwy::TestParamTargetName)
87 :
public ::testing::TestWithParam<std::tuple<uint32_t, T>> {
96 ::testing::TestWithParam<std::tuple<uint32_t, T>>::
GetParam()));
103 #if (HWY_TARGETS & (HWY_TARGETS - 1)) != 0
105 <<
"This hwy target parametric test doesn't use dynamic-dispatch and "
106 "doesn't need to be parametric.";
113 ::testing::TestWithParam<std::tuple<uint32_t, T>>::
GetParam());
117 template <
typename T>
119 const testing::TestParamInfo<std::tuple<uint32_t, T>>&
info) {
121 ::testing::PrintToString(std::get<1>(
info.param));
124 #define HWY_TARGET_INSTANTIATE_TEST_SUITE_P_T(suite, generator) \
125 HWY_GTEST_INSTANTIATE_TEST_SUITE_P( \
126 suite##Group, suite, \
127 ::testing::Combine( \
128 testing::ValuesIn(::hwy::SupportedAndGeneratedTargets()), \
130 ::hwy::TestParamTargetNameAndT<suite::HwyParamType>)
139 #define HWY_EXPORT_AND_TEST_P(suite, func_name) \
140 HWY_EXPORT(func_name); \
141 TEST_P(suite, func_name) { HWY_DYNAMIC_DISPATCH(func_name)(); } \
142 static_assert(true, "For requiring trailing semicolon")
144 #define HWY_EXPORT_AND_TEST_P_T(suite, func_name) \
145 HWY_EXPORT(func_name); \
146 TEST_P(suite, func_name) { HWY_DYNAMIC_DISPATCH(func_name)(GetParam()); } \
147 static_assert(true, "For requiring trailing semicolon")
149 #define HWY_BEFORE_TEST(suite) \
150 class suite : public hwy::TestWithParamTarget {}; \
151 HWY_TARGET_INSTANTIATE_TEST_SUITE_P(suite); \
152 static_assert(true, "For requiring trailing semicolon")
Definition: hwy_gtest.h:87
void TearDown() override
Definition: hwy_gtest.h:99
T GetParam()
Definition: hwy_gtest.h:111
T HwyParamType
Definition: hwy_gtest.h:91
void SetUp() override
Definition: hwy_gtest.h:94
Definition: hwy_gtest.h:46
void TearDown() override
Definition: hwy_gtest.h:50
void SetUp() override
Definition: hwy_gtest.h:48
Definition: aligned_allocator.h:23
void SetSupportedTargetsForTest(uint32_t targets)
static std::string TestParamTargetName(const testing::TestParamInfo< uint32_t > &info)
Definition: hwy_gtest.h:65
static HWY_MAYBE_UNUSED const char * TargetName(uint32_t target)
Definition: targets.h:74
bool SupportedTargetsCalledForTest()
std::string TestParamTargetNameAndT(const testing::TestParamInfo< std::tuple< uint32_t, T >> &info)
Definition: hwy_gtest.h:118
message_info info
Definition: ojph_message.cpp:50