Changeset View
Changeset View
Standalone View
Standalone View
src/test/skiplist_tests.cpp
Show All 40 Lines | for (int i = 0; i < 1000; i++) { | ||||
&vIndex[from]); | &vIndex[from]); | ||||
BOOST_CHECK(vIndex[from].GetAncestor(to) == &vIndex[to]); | BOOST_CHECK(vIndex[from].GetAncestor(to) == &vIndex[to]); | ||||
BOOST_CHECK(vIndex[from].GetAncestor(0) == vIndex.data()); | BOOST_CHECK(vIndex[from].GetAncestor(0) == vIndex.data()); | ||||
} | } | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(getlocator_test) { | BOOST_AUTO_TEST_CASE(getlocator_test) { | ||||
// Build a main chain 100000 blocks long. | // Build a main chain 100000 blocks long. | ||||
std::vector<uint256> vHashMain(100000); | std::vector<BlockHash> vHashMain(100000); | ||||
std::vector<CBlockIndex> vBlocksMain(100000); | std::vector<CBlockIndex> vBlocksMain(100000); | ||||
for (size_t i = 0; i < vBlocksMain.size(); i++) { | for (size_t i = 0; i < vBlocksMain.size(); i++) { | ||||
// Set the hash equal to the height, so we can quickly check the | // Set the hash equal to the height, so we can quickly check the | ||||
// distances. | // distances. | ||||
vHashMain[i] = ArithToUint256(i); | vHashMain[i] = BlockHash(ArithToUint256(i)); | ||||
vBlocksMain[i].nHeight = i; | vBlocksMain[i].nHeight = i; | ||||
vBlocksMain[i].pprev = i ? &vBlocksMain[i - 1] : nullptr; | vBlocksMain[i].pprev = i ? &vBlocksMain[i - 1] : nullptr; | ||||
vBlocksMain[i].phashBlock = &vHashMain[i]; | vBlocksMain[i].phashBlock = &vHashMain[i]; | ||||
vBlocksMain[i].BuildSkip(); | vBlocksMain[i].BuildSkip(); | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK_EQUAL( | ||||
(int)UintToArith256(vBlocksMain[i].GetBlockHash()).GetLow64(), | (int)UintToArith256(vBlocksMain[i].GetBlockHash()).GetLow64(), | ||||
vBlocksMain[i].nHeight); | vBlocksMain[i].nHeight); | ||||
BOOST_CHECK(vBlocksMain[i].pprev == nullptr || | BOOST_CHECK(vBlocksMain[i].pprev == nullptr || | ||||
vBlocksMain[i].nHeight == | vBlocksMain[i].nHeight == | ||||
vBlocksMain[i].pprev->nHeight + 1); | vBlocksMain[i].pprev->nHeight + 1); | ||||
} | } | ||||
// Build a branch that splits off at block 49999, 50000 blocks long. | // Build a branch that splits off at block 49999, 50000 blocks long. | ||||
std::vector<uint256> vHashSide(50000); | std::vector<BlockHash> vHashSide(50000); | ||||
std::vector<CBlockIndex> vBlocksSide(50000); | std::vector<CBlockIndex> vBlocksSide(50000); | ||||
for (size_t i = 0; i < vBlocksSide.size(); i++) { | for (size_t i = 0; i < vBlocksSide.size(); i++) { | ||||
// Add 1<<128 to the hashes, so GetLow64() still returns the height. | // Add 1<<128 to the hashes, so GetLow64() still returns the height. | ||||
vHashSide[i] = ArithToUint256(i + 50000 + (arith_uint256(1) << 128)); | vHashSide[i] = | ||||
BlockHash(ArithToUint256(i + 50000 + (arith_uint256(1) << 128))); | |||||
vBlocksSide[i].nHeight = i + 50000; | vBlocksSide[i].nHeight = i + 50000; | ||||
vBlocksSide[i].pprev = | vBlocksSide[i].pprev = | ||||
i ? &vBlocksSide[i - 1] : (vBlocksMain.data() + 49999); | i ? &vBlocksSide[i - 1] : (vBlocksMain.data() + 49999); | ||||
vBlocksSide[i].phashBlock = &vHashSide[i]; | vBlocksSide[i].phashBlock = &vHashSide[i]; | ||||
vBlocksSide[i].BuildSkip(); | vBlocksSide[i].BuildSkip(); | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK_EQUAL( | ||||
(int)UintToArith256(vBlocksSide[i].GetBlockHash()).GetLow64(), | (int)UintToArith256(vBlocksSide[i].GetBlockHash()).GetLow64(), | ||||
vBlocksSide[i].nHeight); | vBlocksSide[i].nHeight); | ||||
Show All 32 Lines | for (int n = 0; n < 100; n++) { | ||||
UintToArith256(locator.vHave[i]).GetLow64(), | UintToArith256(locator.vHave[i]).GetLow64(), | ||||
dist); | dist); | ||||
dist *= 2; | dist *= 2; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(findearliestatleast_test) { | BOOST_AUTO_TEST_CASE(findearliestatleast_test) { | ||||
std::vector<uint256> vHashMain(100000); | std::vector<BlockHash> vHashMain(100000); | ||||
std::vector<CBlockIndex> vBlocksMain(100000); | std::vector<CBlockIndex> vBlocksMain(100000); | ||||
for (size_t i = 0; i < vBlocksMain.size(); i++) { | for (size_t i = 0; i < vBlocksMain.size(); i++) { | ||||
// Set the hash equal to the height | // Set the hash equal to the height | ||||
vHashMain[i] = ArithToUint256(i); | vHashMain[i] = BlockHash(ArithToUint256(i)); | ||||
vBlocksMain[i].nHeight = i; | vBlocksMain[i].nHeight = i; | ||||
vBlocksMain[i].pprev = i ? &vBlocksMain[i - 1] : nullptr; | vBlocksMain[i].pprev = i ? &vBlocksMain[i - 1] : nullptr; | ||||
vBlocksMain[i].phashBlock = &vHashMain[i]; | vBlocksMain[i].phashBlock = &vHashMain[i]; | ||||
vBlocksMain[i].BuildSkip(); | vBlocksMain[i].BuildSkip(); | ||||
if (i < 10) { | if (i < 10) { | ||||
vBlocksMain[i].nTime = i; | vBlocksMain[i].nTime = i; | ||||
vBlocksMain[i].nTimeMax = i; | vBlocksMain[i].nTimeMax = i; | ||||
} else { | } else { | ||||
▲ Show 20 Lines • Show All 80 Lines • Show Last 20 Lines |