27#include <gtest/gtest.h>
46TEST(EndiannessTest, getHostEndiannessTests) {
47#if defined(__BYTE_ORDER__)
77#define setupHex setfill('0') << setw(2 * sizeof(T)) << std::hex
81::std::ostream&
operator<<(::std::ostream& os,
const intPair<T>& p) {
82 ::testing::Message msg;
83 msg <<
"(0x" <<
setupHex << p.first <<
", 0x" <<
setupHex << p.second <<
")";
91 ::testing::AssertionResult
operator()(
const char* darg1,
const char* darg2,
92 const T& arg1,
const T& arg2) {
93 if (memcmp(&arg1, &arg2,
sizeof(T)) == 0)
94 return ::testing::AssertionSuccess();
96 ::testing::Message msg;
97 msg <<
" Expected: " << darg1 << std::endl;
98 msg <<
" Which is: " <<
setupHex << arg1 << std::endl;
99 msg <<
"To be equal to: " << darg2 << std::endl;
100 msg <<
" Which is: " <<
setupHex << arg2;
102 return ::testing::AssertionFailure() << msg;
108template <
class T1,
class T2>
113 auto p = this->GetParam();
114 auto v = std::get<0>(p);
117 if (std::get<1>(p)) {
118 memcpy(&
in, &(v.first),
sizeof(T2));
119 memcpy(&
expected, &(v.second),
sizeof(T2));
121 memcpy(&
in, &(v.second),
sizeof(T2));
122 memcpy(&
expected, &(v.first),
sizeof(T2));
141 ::testing::Combine(::testing::ValuesIn(ushort16Values),
147 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
false), in);
150 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
true), expected);
154 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), expected);
156 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), expected);
161 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), in);
163 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), in);
185 ::testing::Combine(::testing::ValuesIn(ushort16Values),
191 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
false), in);
194 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
true), expected);
198 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), expected);
200 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), expected);
205 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), in);
207 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), in);
216 ::testing::Combine(::testing::ValuesIn(uint32Values),
222 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
false), in);
225 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
true), expected);
229 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), expected);
231 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), expected);
236 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), in);
238 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), in);
259 ::testing::Combine(::testing::ValuesIn(uint32Values),
265 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
false), in);
268 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
true), expected);
272 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), expected);
274 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), expected);
279 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), in);
281 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), in);
290 ::testing::Combine(::testing::ValuesIn(uint64Values),
296 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
false), in);
299 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
true), expected);
303 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), expected);
305 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), expected);
310 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), in);
312 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), in);
318 ::testing::Combine(::testing::ValuesIn(uint32Values),
324 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
false), in);
327 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
true), expected);
331 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), expected);
333 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), expected);
338 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), in);
340 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), in);
346 ::testing::Combine(::testing::ValuesIn(uint64Values),
352 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
false), in);
355 ASSERT_PRED_FORMAT2(
HexEquals{}, getByteSwappedT(&in,
true), expected);
359 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), expected);
361 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), expected);
366 ASSERT_PRED_FORMAT2(
HexEquals{}, getLEt(&in), in);
368 ASSERT_PRED_FORMAT2(
HexEquals{}, getBEt(&in), in);
Endianness getHostEndiannessRuntime()
int8_t getByteSwapped(int8_t v)
uint16_t getU16LE(const void *data)
Endianness getHostEndianness()
uint32_t getU32BE(const void *data)
T getLE(const void *data)
T getBE(const void *data)
INSTANTIATE_TEST_SUITE_P(MD5Test, MD5Test, ::testing::ValuesIn(testCases))
TEST_P(MD5Test, CheckTestCaseSet)
AbstractGetByteSwappedTest()=default
T2 getBEt(const void *data)
T2 getLEt(const void *data)
T2 getByteSwappedT(const void *data, bool bswap)
TEST(EndiannessTest, getHostEndiannessTests)
::std::ostream & operator<<(::std::ostream &os, const intPair< T > &p)
Endianness getHostEndiannessRuntime()
int8_t getByteSwapped(int8_t v)
uint16_t getU16LE(const void *data)
uint16_t getU16BE(const void *data)
Endianness getHostEndianness()
uint32_t getU32LE(const void *data)
uint32_t getU32BE(const void *data)
T getLE(const void *data)
T getBE(const void *data)
uint16_t getU16BE(const void *data)
uint32_t getU32LE(const void *data)
::testing::AssertionResult operator()(const char *darg1, const char *darg2, const T &arg1, const T &arg2)