xrpld
Loading...
Searching...
No Matches
Varint.cpp
1#include <xrpl/nodestore/detail/Varint.h>
2
3#include <gtest/gtest.h>
4
5#include <array>
6#include <cstddef>
7#include <cstdint>
8#include <limits>
9
10using namespace xrpl::node_store;
11
12TEST(Varint, encode_decode)
13{
14 static constexpr auto kValues = std::to_array<std::size_t>({
15 0,
16 1,
17 2,
18 126,
19 127,
20 128,
21 253,
22 254,
23 255,
24 16127,
25 16128,
26 16129,
27 0xff,
28 0xffff,
29 0xffffffff,
30 0xffffffffffffUL,
32 });
33
34 for (auto const value : kValues)
35 {
37 auto const bytesWritten = writeVarint(buffer.data(), value);
38 EXPECT_GT(bytesWritten, 0u);
39 EXPECT_EQ(bytesWritten, sizeVarint(value));
40
41 std::size_t decoded = 0;
42 auto const bytesRead = readVarint(buffer.data(), bytesWritten, decoded);
43 EXPECT_EQ(bytesRead, bytesWritten);
44 EXPECT_EQ(value, decoded);
45 }
46}
T data(T... args)
T max(T... args)
std::size_t readVarint(void const *buf, std::size_t buflen, std::size_t &t)
Definition Varint.h:37
std::size_t writeVarint(void *p0, std::size_t v)
Definition Varint.h:87
std::size_t sizeVarint(T v)
Definition Varint.h:73
TEST(NodeStoreBasics, predictable_batches)
Definition Basics.cpp:14