git / moonbite-core / src/libmw/test/tests/models/tx/Test_TxBody.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/models/tx/Kernel.h>#include <test_framework/TestMWEB.h>#include <test_framework/TxBuilder.h>BOOST_FIXTURE_TEST_SUITE(TestTxBody, MWEBTestingSetup)BOOST_AUTO_TEST_CASE(Test_TxBody){    const uint64_t pegInAmount = 123;    const uint64_t fee = 5;    mw::Transaction::CPtr tx = test::TxBuilder()        .AddInput(20).AddInput(30)        .AddOutput(45).AddOutput(pegInAmount)        .AddPlainKernel(fee).AddPeginKernel(pegInAmount)        .Build().GetTransaction();    const TxBody& txBody = tx->GetBody();    txBody.Validate();    //    // Serialization    //    std::vector<uint8_t> serialized = txBody.Serialized();    TxBody txBody2;    VectorReader(SER_NETWORK, PROTOCOL_VERSION, serialized, 0) >> txBody2;    BOOST_REQUIRE(txBody == txBody2);    //    // Getters    //    const auto total_fee = txBody.GetTotalFee();    BOOST_REQUIRE(total_fee.has_value());    BOOST_REQUIRE(*total_fee == fee);}BOOST_AUTO_TEST_CASE(TotalFeeOutOfRange_Test){    const std::vector<Kernel> kernels{        Kernel::Create(BlindingFactor::Random(), boost::none, MAX_MONEY, boost::none, std::vector<PegOutCoin>{}, boost::none),        Kernel::Create(BlindingFactor::Random(), boost::none, 1, boost::none, std::vector<PegOutCoin>{}, boost::none)    };    TxBody txBody({}, {}, kernels);    BOOST_REQUIRE(!txBody.GetTotalFee().has_value());}BOOST_AUTO_TEST_SUITE_END()