@ -69,4 +69,28 @@ BOOST_AUTO_TEST_CASE(get_next_work_upper_limit_actual)
BOOST_CHECK_EQUAL ( CalculateNextWorkRequired ( & pindexLast , nLastRetargetTime , params ) , 0x1d00e1fd ) ;
}
BOOST_AUTO_TEST_CASE ( GetBlockProofEquivalentTime_test )
{
SelectParams ( CBaseChainParams : : MAIN ) ;
const Consensus : : Params & params = Params ( ) . GetConsensus ( ) ;
std : : vector < CBlockIndex > blocks ( 10000 ) ;
for ( int i = 0 ; i < 10000 ; i + + ) {
blocks [ i ] . pprev = i ? & blocks [ i - 1 ] : NULL ;
blocks [ i ] . nHeight = i ;
blocks [ i ] . nTime = 1269211443 + i * params . nPowTargetSpacing ;
blocks [ i ] . nBits = 0x207fffff ; /* target 0x7fffff000... */
blocks [ i ] . nChainWork = i ? blocks [ i - 1 ] . nChainWork + GetBlockProof ( blocks [ i - 1 ] ) : arith_uint256 ( 0 ) ;
}
for ( int j = 0 ; j < 1000 ; j + + ) {
CBlockIndex * p1 = & blocks [ GetRand ( 10000 ) ] ;
CBlockIndex * p2 = & blocks [ GetRand ( 10000 ) ] ;
CBlockIndex * p3 = & blocks [ GetRand ( 10000 ) ] ;
int64_t tdiff = GetBlockProofEquivalentTime ( * p1 , * p2 , * p3 , params ) ;
BOOST_CHECK_EQUAL ( tdiff , p1 - > GetBlockTime ( ) - p2 - > GetBlockTime ( ) ) ;
}
}
BOOST_AUTO_TEST_SUITE_END ( )