git / moonbite-core / src/libmw/test/tests/node/Test_BlockBuilder.cpp · raw

// Copyright (c) 2021 The Litecoin Core developers// Distributed under the MIT software license, see the accompanying// file COPYING or http://www.opensource.org/licenses/mit-license.php.#include <mw/node/BlockBuilder.h>#include <mw/node/CoinsView.h>#include <mw/node/BlockValidator.h>#include <test_framework/Miner.h>#include <test_framework/TestMWEB.h>using namespace mw;BOOST_FIXTURE_TEST_SUITE(TestBlockBuilder, MWEBTestingSetup)BOOST_AUTO_TEST_CASE(BlockBuilder){    auto db_view = CoinsViewDB::Open(GetDataDir(), nullptr, GetDB());    auto cached_view = std::make_shared<CoinsViewCache>(db_view);    test::Miner miner(GetDataDir());    ///////////////////////    // Mine Block 1    ///////////////////////    test::Tx block1_tx1 = test::Tx::CreatePegIn(1000);    auto block1 = miner.MineBlock(150, { block1_tx1 });    cached_view->ApplyBlock(block1.GetBlock(), false);    ///////////////////////    // Mine Block 2    ///////////////////////    test::Tx block2_tx1 = test::Tx::CreatePegIn(500);    auto block2 = miner.MineBlock(151, {block2_tx1});    cached_view->ApplyBlock(block2.GetBlock(), false);    ///////////////////////    // Flush View    ///////////////////////    auto pBatch = GetDB()->CreateBatch();    cached_view->Flush(pBatch);    pBatch->Commit();    ///////////////////////    // BlockBuilder    ///////////////////////    auto block_builder = std::make_shared<mw::BlockBuilder>(152, cached_view);    test::Tx builder_tx1 = test::Tx::CreatePegIn(150);    bool tx1_status = block_builder->AddTransaction(        builder_tx1.GetTransaction(),        { builder_tx1.GetPegInCoin() }    );    BOOST_CHECK(tx1_status);    mw::Block::Ptr built_block = block_builder->BuildBlock();    BOOST_CHECK(built_block->GetKernels().front() == builder_tx1.GetKernels().front());    bool block_valid = BlockValidator::ValidateBlock(        built_block,        std::vector<PegInCoin>{ builder_tx1.GetPegInCoin() },        std::vector<PegOutCoin>{}    );    BOOST_CHECK(block_valid);}BOOST_AUTO_TEST_SUITE_END()