dncurrency/nano/test_common/ledger.hpp
Piotr Wójcik 6281105438
Use 'magic_enum' library for static reflection for enums (#4065)
This PR introduces magic_enum (https://github.com/Neargye/magic_enum) library as a submodule, which ergonomically handles enum to string conversions without requiring any adaptations to existing enum definitions.
2023-01-26 14:18:25 +00:00

42 lines
1.1 KiB
C++

#pragma once
#include <nano/lib/logger_mt.hpp>
#include <nano/lib/stats.hpp>
#include <nano/node/common.hpp>
#include <nano/secure/ledger.hpp>
namespace nano
{
class store;
namespace test
{
namespace context
{
class ledger_context
{
public:
/** 'blocks' initialises the ledger with each block in-order
Blocks must all return process_result::progress when processed */
ledger_context (std::deque<std::shared_ptr<nano::block>> && blocks = std::deque<std::shared_ptr<nano::block>>{});
nano::ledger & ledger ();
nano::store & store ();
nano::stats & stats ();
std::deque<std::shared_ptr<nano::block>> const & blocks () const;
private:
nano::logger_mt logger;
std::unique_ptr<nano::store> store_m;
nano::stats stats_m;
nano::ledger ledger_m;
std::deque<std::shared_ptr<nano::block>> blocks_m;
};
/** Only a genesis block */
ledger_context ledger_empty ();
/** Send/receive pair of state blocks on the genesis account*/
ledger_context ledger_send_receive ();
/** Send/receive pair of legacy blocks on the genesis account*/
ledger_context ledger_send_receive_legacy ();
}
}
}