xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
tests
libxrpl
nodestore
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
10
using namespace
xrpl::node_store
;
11
12
TEST
(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,
31
std::numeric_limits<std::size_t>::max
(),
32
});
33
34
for
(
auto
const
value : kValues)
35
{
36
std::array<std::uint8_t, VarintTraits<std::size_t>::kMax
> buffer{};
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
}
array
cstddef
cstdint
std::array::data
T data(T... args)
limits
std::numeric_limits::max
T max(T... args)
xrpl::node_store
Definition
ServiceRegistry.h:18
xrpl::node_store::readVarint
std::size_t readVarint(void const *buf, std::size_t buflen, std::size_t &t)
Definition
Varint.h:37
xrpl::node_store::writeVarint
std::size_t writeVarint(void *p0, std::size_t v)
Definition
Varint.h:87
xrpl::node_store::sizeVarint
std::size_t sizeVarint(T v)
Definition
Varint.h:73
xrpl::node_store::TEST
TEST(NodeStoreBasics, predictable_batches)
Definition
Basics.cpp:14
std::size_t
Generated by
1.17.0