git / moonbite-core / src/libmw/test/tests/db/Test_LeafDB.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/db/LeafDB.h>#include <test_framework/TestMWEB.h>BOOST_FIXTURE_TEST_SUITE(TestLeafDB, MWEBTestingSetup)BOOST_AUTO_TEST_CASE(LeafDBTest){    auto pDatabase = GetDB();    LeafDB ldb('L', pDatabase.get());    auto leaf1 = mmr::Leaf::Create(mmr::LeafIndex::At(0), { 0, 1, 2 });    auto leaf2 = mmr::Leaf::Create(mmr::LeafIndex::At(1), { 1, 2, 3 });    auto leaf3 = mmr::Leaf::Create(mmr::LeafIndex::At(2), { 2, 3, 4 });    ldb.Add({leaf1, leaf2, leaf3});    auto pLeaf = ldb.Get(mmr::LeafIndex::At(0));    BOOST_REQUIRE(pLeaf->GetHash() == leaf1.GetHash());    BOOST_REQUIRE(pLeaf->vec() == leaf1.vec());    pLeaf = ldb.Get(mmr::LeafIndex::At(1));    BOOST_REQUIRE(pLeaf->GetHash() == leaf2.GetHash());    BOOST_REQUIRE(pLeaf->vec() == leaf2.vec());    pLeaf = ldb.Get(mmr::LeafIndex::At(2));    BOOST_REQUIRE(pLeaf->GetHash() == leaf3.GetHash());    BOOST_REQUIRE(pLeaf->vec() == leaf3.vec());    std::vector<uint8_t> data;    BOOST_REQUIRE(pDatabase->Read("L" + std::to_string(leaf1.GetLeafIndex().Get()), data));    BOOST_REQUIRE(data == std::vector<uint8_t>({3, 0, 1, 2}));    BOOST_REQUIRE(pDatabase->Read("L" + std::to_string(leaf2.GetLeafIndex().Get()), data));    BOOST_REQUIRE(data == std::vector<uint8_t>({3, 1, 2, 3}));    BOOST_REQUIRE(pDatabase->Read("L" + std::to_string(leaf3.GetLeafIndex().Get()), data));    BOOST_REQUIRE(data == std::vector<uint8_t>({3, 2, 3, 4}));    ldb.Remove({leaf2.GetLeafIndex()});    BOOST_REQUIRE(ldb.Get(mmr::LeafIndex::At(1)) == nullptr);    ldb.RemoveAll();    BOOST_REQUIRE(ldb.Get(mmr::LeafIndex::At(0)) == nullptr);    BOOST_REQUIRE(ldb.Get(mmr::LeafIndex::At(2)) == nullptr);    ldb.Add({leaf2});    pLeaf = ldb.Get(mmr::LeafIndex::At(1));    BOOST_REQUIRE(pLeaf->GetHash() == leaf2.GetHash());    BOOST_REQUIRE(pLeaf->vec() == leaf2.vec());}BOOST_AUTO_TEST_SUITE_END()