Adds a ledger_context class and ledger_empty function which can be used by unit tests to easily create an empty ledger. This removes a lot of boilerplate code in associated tests. (#3848)

This commit is contained in:
clemahieu 2022-07-08 20:53:48 +01:00 committed by GitHub
commit 65eba6aa44
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 588 additions and 774 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,7 @@
add_library(
test_common
ledger.hpp
ledger.cpp
network.hpp
network.cpp
system.hpp

View file

@ -0,0 +1,30 @@
#include <nano/node/node.hpp>
#include <nano/test_common/ledger.hpp>
nano::test::context::ledger_context::ledger_context () :
store_m{ nano::make_store (logger, nano::unique_path (), nano::dev::constants) },
ledger_m{ *store_m, stats_m, nano::dev::constants }
{
debug_assert (!store_m->init_error ());
store_m->initialize (store_m->tx_begin_write (), ledger_m.cache, ledger_m.constants);
}
nano::ledger & nano::test::context::ledger_context::ledger ()
{
return ledger_m;
}
nano::store & nano::test::context::ledger_context::store ()
{
return *store_m;
}
nano::stat & nano::test::context::ledger_context::stats ()
{
return stats_m;
}
auto nano::test::context::ledger_empty () -> ledger_context
{
return ledger_context{};
}

View file

@ -0,0 +1,33 @@
#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:
ledger_context ();
nano::ledger & ledger ();
nano::store & store ();
nano::stat & stats ();
private:
nano::logger_mt logger;
std::unique_ptr<nano::store> store_m;
nano::stat stats_m;
nano::ledger ledger_m;
};
ledger_context ledger_empty ();
}
}
}