diff --git a/src/test/blockindex_tests.cpp b/src/test/blockindex_tests.cpp --- a/src/test/blockindex_tests.cpp +++ b/src/test/blockindex_tests.cpp @@ -80,4 +80,27 @@ } } +BOOST_AUTO_TEST_CASE(received_time) { + const uint32_t expectedBlockTime = 123456; + + CBlockHeader header; + header.nTime = expectedBlockTime; + + CBlockIndex index = CBlockIndex(header); + + // nTimeReceived defaults to block time + BOOST_CHECK(index.nTimeReceived == expectedBlockTime); + + // nTimeReceived can be updated to the actual received time, which may + // be before or after the miner's time + for (uint32_t receivedTime = expectedBlockTime - 10; + receivedTime <= expectedBlockTime + 10; receivedTime++) { + index.nTimeReceived = receivedTime; + BOOST_CHECK(index.GetBlockTime() == expectedBlockTime); + BOOST_CHECK(index.GetHeaderReceivedTime() == receivedTime); + BOOST_CHECK(index.GetReceivedTimeDiff() == + int64_t(receivedTime) - int64_t(expectedBlockTime)); + } +} + BOOST_AUTO_TEST_SUITE_END()