// Copyright (c) 2020 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include #include #include #include using interfaces::FoundBlock; BOOST_FIXTURE_TEST_SUITE(interfaces_tests, TestChain100Setup) BOOST_AUTO_TEST_CASE(findBlock) { auto chain = interfaces::MakeChain(m_node); auto& active = ChainActive(); uint256 hash; BOOST_CHECK(chain->findBlock(active[10]->GetBlockHash(), FoundBlock().hash(hash))); BOOST_CHECK_EQUAL(hash, active[10]->GetBlockHash()); int height = -1; BOOST_CHECK(chain->findBlock(active[20]->GetBlockHash(), FoundBlock().height(height))); BOOST_CHECK_EQUAL(height, active[20]->nHeight); CBlock data; BOOST_CHECK(chain->findBlock(active[30]->GetBlockHash(), FoundBlock().data(data))); BOOST_CHECK_EQUAL(data.GetHash(), active[30]->GetBlockHash()); int64_t time = -1; BOOST_CHECK(chain->findBlock(active[40]->GetBlockHash(), FoundBlock().time(time))); BOOST_CHECK_EQUAL(time, active[40]->GetBlockTime()); int64_t max_time = -1; BOOST_CHECK(chain->findBlock(active[50]->GetBlockHash(), FoundBlock().maxTime(max_time))); BOOST_CHECK_EQUAL(max_time, active[50]->GetBlockTimeMax()); int64_t mtp_time = -1; BOOST_CHECK(chain->findBlock(active[60]->GetBlockHash(), FoundBlock().mtpTime(mtp_time))); BOOST_CHECK_EQUAL(mtp_time, active[60]->GetMedianTimePast()); BOOST_CHECK(!chain->findBlock({}, FoundBlock())); } BOOST_AUTO_TEST_CASE(findAncestorByHash) { auto chain = interfaces::MakeChain(m_node); auto& active = ChainActive(); int height = -1; BOOST_CHECK(chain->findAncestorByHash(active[20]->GetBlockHash(), active[10]->GetBlockHash(), FoundBlock().height(height))); BOOST_CHECK_EQUAL(height, 10); BOOST_CHECK(!chain->findAncestorByHash(active[10]->GetBlockHash(), active[20]->GetBlockHash())); } BOOST_AUTO_TEST_SUITE_END()