xrpld
Loading...
Searching...
No Matches
Basics.cpp
1#include <xrpl/nodestore/NodeObject.h>
2#include <xrpl/nodestore/detail/DecodedBlob.h>
3#include <xrpl/nodestore/detail/EncodedBlob.h>
4
5#include <gtest/gtest.h>
6#include <nodestore/TestBase.h>
7
8#include <cstddef>
9#include <memory>
10#include <string>
11
12namespace xrpl::node_store {
13
14TEST(NodeStoreBasics, predictable_batches)
15{
18 EXPECT_EQ(batch1, batch2);
19
20 auto const batch3 = createPredictableBatch(kNumObjectsToTest, kSeedValue + 1);
21 EXPECT_NE(batch1, batch3);
22}
23
24TEST(NodeStoreBasics, blob_encoding)
25{
27 for (std::size_t i = 0; i < batch.size(); ++i)
28 {
29 SCOPED_TRACE("blob index=" + std::to_string(i));
30 EncodedBlob const encoded(batch[i]);
31 DecodedBlob decoded(encoded.getKey(), encoded.getData(), encoded.getSize());
32 EXPECT_TRUE(decoded.wasOk());
33 if (decoded.wasOk())
34 {
35 std::shared_ptr<NodeObject> const object(decoded.createObject());
36 EXPECT_TRUE(isSame(batch[i], object));
37 }
38 }
39}
40
41} // namespace xrpl::node_store
Parsed key/value blob into NodeObject components.
Definition DecodedBlob.h:21
bool wasOk() const noexcept
Determine if the decoding was successful.
Definition DecodedBlob.h:32
std::shared_ptr< NodeObject > createObject()
Create a NodeObject from this data.
Convert a NodeObject from in-memory to database format.
Definition EncodedBlob.h:39
void const * getData() const noexcept
std::size_t getSize() const noexcept
void const * getKey() const noexcept
Definition EncodedBlob.h:99
constexpr std::uint64_t kSeedValue
Definition TestBase.h:28
bool isSame(std::shared_ptr< NodeObject > const &lhs, std::shared_ptr< NodeObject > const &rhs)
Definition TestBase.h:41
TEST(NodeStoreBasics, predictable_batches)
Definition Basics.cpp:14
Batch createPredictableBatch(std::size_t numObjects, std::uint64_t seed)
Definition TestBase.h:48
constexpr int kNumObjectsToTest
Definition TestBase.h:26
T to_string(T... args)