TEST(DataView, ConstDataView) { char buf[sizeof(uint32_t) * 3]; uint32_t native = 1234; uint32_t le = endian::nativeToLittle(native); uint32_t be = endian::nativeToBig(native); std::memcpy(buf, &native, sizeof(uint32_t)); std::memcpy(buf + sizeof(uint32_t), &le, sizeof(uint32_t)); std::memcpy(buf + sizeof(uint32_t) * 2, &be, sizeof(uint32_t)); ConstDataView cdv(buf); ASSERT_EQUALS(buf, cdv.view()); ASSERT_EQUALS(buf + 5, cdv.view(5)); ASSERT_EQUALS(native, cdv.readNative<uint32_t>()); ASSERT_EQUALS(native, cdv.readLE<uint32_t>(sizeof(uint32_t))); ASSERT_EQUALS(native, cdv.readBE<uint32_t>(sizeof(uint32_t) * 2)); }
TEST(DataRange, ConstDataRange) { char buf[sizeof(uint32_t) * 3]; uint32_t native = 1234; uint32_t le = endian::nativeToLittle(native); uint32_t be = endian::nativeToBig(native); std::memcpy(buf, &native, sizeof(uint32_t)); std::memcpy(buf + sizeof(uint32_t), &le, sizeof(uint32_t)); std::memcpy(buf + sizeof(uint32_t) * 2, &be, sizeof(uint32_t)); ConstDataRange cdv(buf, buf + sizeof(buf)); ASSERT_EQUALS(native, cdv.read<uint32_t>().getValue()); ASSERT_EQUALS(native, cdv.read<LittleEndian<uint32_t>>(sizeof(uint32_t)).getValue()); ASSERT_EQUALS(native, cdv.read<BigEndian<uint32_t>>(sizeof(uint32_t) * 2).getValue()); auto result = cdv.read<uint32_t>(sizeof(uint32_t) * 3); ASSERT_EQUALS(false, result.isOK()); ASSERT_EQUALS(ErrorCodes::Overflow, result.getStatus().code()); }