git / moonbite-core / src/libmw/test/tests/models/tx/Test_UTXO.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/UTXO.h>#include <mw/models/wallet/StealthAddress.h>#include <test_framework/Deserializer.h>#include <test_framework/TestMWEB.h>BOOST_FIXTURE_TEST_SUITE(TestUTXO, MWEBTestingSetup)BOOST_AUTO_TEST_CASE(TxUTXO){    CAmount amount = 12345;    BlindingFactor blind;    Output output = Output::Create(        &blind,        SecretKey::Random(),        StealthAddress::Random(),        amount    );    Commitment commit = Commitment::Switch(blind, amount);    int32_t blockHeight = 20;    mmr::LeafIndex leafIndex = mmr::LeafIndex::At(5);    UTXO utxo{        blockHeight,        mmr::LeafIndex(leafIndex),        Output(output)    };    //    // Serialization    //    {        std::vector<uint8_t> serialized = utxo.Serialized();        Deserializer deserializer(serialized);        BOOST_REQUIRE(deserializer.Read<int32_t>() == blockHeight);        BOOST_REQUIRE(mmr::LeafIndex::At(deserializer.Read<uint64_t>()) == leafIndex);        BOOST_REQUIRE(deserializer.Read<Output>() == output);    }    //    // Getters    //    {        BOOST_REQUIRE(utxo.GetBlockHeight() == blockHeight);        BOOST_REQUIRE(utxo.GetLeafIndex() == leafIndex);        BOOST_REQUIRE(utxo.GetOutput() == output);        BOOST_REQUIRE(utxo.GetCommitment() == commit);        BOOST_REQUIRE(utxo.GetRangeProof() == output.GetRangeProof());        BOOST_REQUIRE(utxo.BuildProofData() == output.BuildProofData());    }}BOOST_AUTO_TEST_SUITE_END()