Changeset View
Changeset View
Standalone View
Standalone View
src/test/serialize_tests.cpp
Show First 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | public: | ||||
template <typename Stream, typename Operation> | template <typename Stream, typename Operation> | ||||
inline void SerializationOp(Stream &s, Operation ser_action) { | inline void SerializationOp(Stream &s, Operation ser_action) { | ||||
READWRITE(intval, boolval, stringval, charstrval, txval); | READWRITE(intval, boolval, stringval, charstrval, txval); | ||||
} | } | ||||
}; | }; | ||||
BOOST_AUTO_TEST_CASE(sizes) { | BOOST_AUTO_TEST_CASE(sizes) { | ||||
BOOST_CHECK_EQUAL(sizeof(char), GetSerializeSize(char(0), 0, 0)); | BOOST_CHECK_EQUAL(sizeof(char), GetSerializeSize(char(0))); | ||||
BOOST_CHECK_EQUAL(sizeof(int8_t), GetSerializeSize(int8_t(0), 0, 0)); | BOOST_CHECK_EQUAL(sizeof(int8_t), GetSerializeSize(int8_t(0))); | ||||
BOOST_CHECK_EQUAL(sizeof(uint8_t), GetSerializeSize(uint8_t(0), 0, 0)); | BOOST_CHECK_EQUAL(sizeof(uint8_t), GetSerializeSize(uint8_t(0))); | ||||
BOOST_CHECK_EQUAL(sizeof(int16_t), GetSerializeSize(int16_t(0), 0, 0)); | BOOST_CHECK_EQUAL(sizeof(int16_t), GetSerializeSize(int16_t(0))); | ||||
BOOST_CHECK_EQUAL(sizeof(uint16_t), GetSerializeSize(uint16_t(0), 0, 0)); | BOOST_CHECK_EQUAL(sizeof(uint16_t), GetSerializeSize(uint16_t(0))); | ||||
BOOST_CHECK_EQUAL(sizeof(int32_t), GetSerializeSize(int32_t(0), 0, 0)); | BOOST_CHECK_EQUAL(sizeof(int32_t), GetSerializeSize(int32_t(0))); | ||||
BOOST_CHECK_EQUAL(sizeof(uint32_t), GetSerializeSize(uint32_t(0), 0, 0)); | BOOST_CHECK_EQUAL(sizeof(uint32_t), GetSerializeSize(uint32_t(0))); | ||||
BOOST_CHECK_EQUAL(sizeof(int64_t), GetSerializeSize(int64_t(0), 0, 0)); | BOOST_CHECK_EQUAL(sizeof(int64_t), GetSerializeSize(int64_t(0))); | ||||
BOOST_CHECK_EQUAL(sizeof(uint64_t), GetSerializeSize(uint64_t(0), 0, 0)); | BOOST_CHECK_EQUAL(sizeof(uint64_t), GetSerializeSize(uint64_t(0))); | ||||
BOOST_CHECK_EQUAL(sizeof(float), GetSerializeSize(float(0), 0, 0)); | BOOST_CHECK_EQUAL(sizeof(float), GetSerializeSize(float(0))); | ||||
BOOST_CHECK_EQUAL(sizeof(double), GetSerializeSize(double(0), 0, 0)); | BOOST_CHECK_EQUAL(sizeof(double), GetSerializeSize(double(0))); | ||||
// Bool is serialized as char | // Bool is serialized as char | ||||
BOOST_CHECK_EQUAL(sizeof(char), GetSerializeSize(bool(0), 0, 0)); | BOOST_CHECK_EQUAL(sizeof(char), GetSerializeSize(bool(0))); | ||||
// Sanity-check GetSerializeSize and c++ type matching | // Sanity-check GetSerializeSize and c++ type matching | ||||
BOOST_CHECK_EQUAL(GetSerializeSize(char(0), 0, 0), 1U); | BOOST_CHECK_EQUAL(GetSerializeSize(char(0)), 1U); | ||||
BOOST_CHECK_EQUAL(GetSerializeSize(int8_t(0), 0, 0), 1U); | BOOST_CHECK_EQUAL(GetSerializeSize(int8_t(0)), 1U); | ||||
BOOST_CHECK_EQUAL(GetSerializeSize(uint8_t(0), 0, 0), 1U); | BOOST_CHECK_EQUAL(GetSerializeSize(uint8_t(0)), 1U); | ||||
BOOST_CHECK_EQUAL(GetSerializeSize(int16_t(0), 0, 0), 2U); | BOOST_CHECK_EQUAL(GetSerializeSize(int16_t(0)), 2U); | ||||
BOOST_CHECK_EQUAL(GetSerializeSize(uint16_t(0), 0, 0), 2U); | BOOST_CHECK_EQUAL(GetSerializeSize(uint16_t(0)), 2U); | ||||
BOOST_CHECK_EQUAL(GetSerializeSize(int32_t(0), 0, 0), 4U); | BOOST_CHECK_EQUAL(GetSerializeSize(int32_t(0)), 4U); | ||||
BOOST_CHECK_EQUAL(GetSerializeSize(uint32_t(0), 0, 0), 4U); | BOOST_CHECK_EQUAL(GetSerializeSize(uint32_t(0)), 4U); | ||||
BOOST_CHECK_EQUAL(GetSerializeSize(int64_t(0), 0, 0), 8U); | BOOST_CHECK_EQUAL(GetSerializeSize(int64_t(0)), 8U); | ||||
BOOST_CHECK_EQUAL(GetSerializeSize(uint64_t(0), 0, 0), 8U); | BOOST_CHECK_EQUAL(GetSerializeSize(uint64_t(0)), 8U); | ||||
BOOST_CHECK_EQUAL(GetSerializeSize(float(0), 0, 0), 4U); | BOOST_CHECK_EQUAL(GetSerializeSize(float(0)), 4U); | ||||
BOOST_CHECK_EQUAL(GetSerializeSize(double(0), 0, 0), 8U); | BOOST_CHECK_EQUAL(GetSerializeSize(double(0)), 8U); | ||||
BOOST_CHECK_EQUAL(GetSerializeSize(bool(0), 0, 0), 1U); | BOOST_CHECK_EQUAL(GetSerializeSize(bool(0)), 1U); | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(floats_conversion) { | BOOST_AUTO_TEST_CASE(floats_conversion) { | ||||
// Choose values that map unambiguously to binary floating point to avoid | // Choose values that map unambiguously to binary floating point to avoid | ||||
// rounding issues at the compiler side. | // rounding issues at the compiler side. | ||||
BOOST_CHECK_EQUAL(ser_uint32_to_float(0x00000000), 0.0F); | BOOST_CHECK_EQUAL(ser_uint32_to_float(0x00000000), 0.0F); | ||||
BOOST_CHECK_EQUAL(ser_uint32_to_float(0x3f000000), 0.5F); | BOOST_CHECK_EQUAL(ser_uint32_to_float(0x3f000000), 0.5F); | ||||
BOOST_CHECK_EQUAL(ser_uint32_to_float(0x3f800000), 1.0F); | BOOST_CHECK_EQUAL(ser_uint32_to_float(0x3f800000), 1.0F); | ||||
▲ Show 20 Lines • Show All 79 Lines • ▼ Show 20 Lines | |||||
BOOST_AUTO_TEST_CASE(varints) { | BOOST_AUTO_TEST_CASE(varints) { | ||||
// encode | // encode | ||||
CDataStream ss(SER_DISK, 0); | CDataStream ss(SER_DISK, 0); | ||||
CDataStream::size_type size = 0; | CDataStream::size_type size = 0; | ||||
for (int i = 0; i < 100000; i++) { | for (int i = 0; i < 100000; i++) { | ||||
ss << VARINT(i, VarIntMode::NONNEGATIVE_SIGNED); | ss << VARINT(i, VarIntMode::NONNEGATIVE_SIGNED); | ||||
size += | size += ::GetSerializeSize(VARINT(i, VarIntMode::NONNEGATIVE_SIGNED)); | ||||
::GetSerializeSize(VARINT(i, VarIntMode::NONNEGATIVE_SIGNED), 0, 0); | |||||
BOOST_CHECK(size == ss.size()); | BOOST_CHECK(size == ss.size()); | ||||
} | } | ||||
for (uint64_t i = 0; i < 100000000000ULL; i += 999999937) { | for (uint64_t i = 0; i < 100000000000ULL; i += 999999937) { | ||||
ss << VARINT(i); | ss << VARINT(i); | ||||
size += ::GetSerializeSize(VARINT(i), 0, 0); | size += ::GetSerializeSize(VARINT(i)); | ||||
BOOST_CHECK(size == ss.size()); | BOOST_CHECK(size == ss.size()); | ||||
} | } | ||||
// decode | // decode | ||||
for (int i = 0; i < 100000; i++) { | for (int i = 0; i < 100000; i++) { | ||||
int j = -1; | int j = -1; | ||||
ss >> VARINT(j, VarIntMode::NONNEGATIVE_SIGNED); | ss >> VARINT(j, VarIntMode::NONNEGATIVE_SIGNED); | ||||
BOOST_CHECK_MESSAGE(i == j, "decoded:" << j << " expected:" << i); | BOOST_CHECK_MESSAGE(i == j, "decoded:" << j << " expected:" << i); | ||||
▲ Show 20 Lines • Show All 233 Lines • Show Last 20 Lines |