1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
#include "components/misc/endianness.hpp"
#include <gtest/gtest.h>
struct EndiannessTest : public ::testing::Test
{
};
TEST_F(EndiannessTest, test_swap_endianness_inplace1)
{
uint8_t zero = 0x00;
uint8_t ff = 0xFF;
uint8_t fortytwo = 0x42;
uint8_t half = 128;
Misc::swapEndiannessInplace(zero);
EXPECT_EQ(zero, 0x00);
Misc::swapEndiannessInplace(ff);
EXPECT_EQ(ff, 0xFF);
Misc::swapEndiannessInplace(fortytwo);
EXPECT_EQ(fortytwo, 0x42);
Misc::swapEndiannessInplace(half);
EXPECT_EQ(half, 128);
}
TEST_F(EndiannessTest, test_swap_endianness_inplace2)
{
uint16_t zero = 0x0000;
uint16_t ffff = 0xFFFF;
uint16_t n12 = 0x0102;
uint16_t fortytwo = 0x0042;
Misc::swapEndiannessInplace(zero);
EXPECT_EQ(zero, 0x0000u);
Misc::swapEndiannessInplace(zero);
EXPECT_EQ(zero, 0x0000u);
Misc::swapEndiannessInplace(ffff);
EXPECT_EQ(ffff, 0xFFFFu);
Misc::swapEndiannessInplace(ffff);
EXPECT_EQ(ffff, 0xFFFFu);
Misc::swapEndiannessInplace(n12);
EXPECT_EQ(n12, 0x0201u);
Misc::swapEndiannessInplace(n12);
EXPECT_EQ(n12, 0x0102u);
Misc::swapEndiannessInplace(fortytwo);
EXPECT_EQ(fortytwo, 0x4200u);
Misc::swapEndiannessInplace(fortytwo);
EXPECT_EQ(fortytwo, 0x0042u);
}
TEST_F(EndiannessTest, test_swap_endianness_inplace4)
{
uint32_t zero = 0x00000000;
uint32_t n1234 = 0x01020304;
uint32_t ffff = 0xFFFFFFFF;
Misc::swapEndiannessInplace(zero);
EXPECT_EQ(zero, 0x00000000u);
Misc::swapEndiannessInplace(zero);
EXPECT_EQ(zero, 0x00000000u);
Misc::swapEndiannessInplace(n1234);
EXPECT_EQ(n1234, 0x04030201u);
Misc::swapEndiannessInplace(n1234);
EXPECT_EQ(n1234, 0x01020304u);
Misc::swapEndiannessInplace(ffff);
EXPECT_EQ(ffff, 0xFFFFFFFFu);
Misc::swapEndiannessInplace(ffff);
EXPECT_EQ(ffff, 0xFFFFFFFFu);
}
TEST_F(EndiannessTest, test_swap_endianness_inplace8)
{
uint64_t zero = 0x0000'0000'0000'0000;
uint64_t n1234 = 0x0102'0304'0506'0708;
uint64_t ffff = 0xFFFF'FFFF'FFFF'FFFF;
Misc::swapEndiannessInplace(zero);
EXPECT_EQ(zero, 0x0000'0000'0000'0000u);
Misc::swapEndiannessInplace(zero);
EXPECT_EQ(zero, 0x0000'0000'0000'0000u);
Misc::swapEndiannessInplace(ffff);
EXPECT_EQ(ffff, 0xFFFF'FFFF'FFFF'FFFFu);
Misc::swapEndiannessInplace(ffff);
EXPECT_EQ(ffff, 0xFFFF'FFFF'FFFF'FFFFu);
Misc::swapEndiannessInplace(n1234);
EXPECT_EQ(n1234, 0x0807'0605'0403'0201u);
Misc::swapEndiannessInplace(n1234);
EXPECT_EQ(n1234, 0x0102'0304'0506'0708u);
}
TEST_F(EndiannessTest, test_swap_endianness_inplace_float)
{
const uint32_t original = 0x4023d70a;
const uint32_t expected = 0x0ad72340;
float number;
memcpy(&number, &original, sizeof(original));
Misc::swapEndiannessInplace(number);
EXPECT_TRUE(!memcmp(&number, &expected, sizeof(expected)));
}
TEST_F(EndiannessTest, test_swap_endianness_inplace_double)
{
const uint64_t original = 0x040047ae147ae147ul;
const uint64_t expected = 0x47e17a14ae470004ul;
double number;
memcpy(&number, &original, sizeof(original));
Misc::swapEndiannessInplace(number);
EXPECT_TRUE(!memcmp(&number, &expected, sizeof(expected)));
}
|