mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-11 14:38:29 +01:00
Drop the chain argument to GetDifficulty
This removes the need to include rpc/blockchain.cpp in order to put GetDifficulty under test. GetDifficulty was called in two ways: * with a guaranteed non-null blockindex * with no argument Change the latter case to be provided chainActive.Tip() explicitly.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
#include "stdlib.h"
|
||||
|
||||
#include "rpc/blockchain.cpp"
|
||||
#include "rpc/blockchain.h"
|
||||
#include "test/test_bitcoin.h"
|
||||
|
||||
/* Equality between doubles is imprecise. Comparison should be done
|
||||
@@ -22,14 +22,6 @@ static CBlockIndex* CreateBlockIndexWithNbits(uint32_t nbits)
|
||||
return block_index;
|
||||
}
|
||||
|
||||
static CChain CreateChainWithNbits(uint32_t nbits)
|
||||
{
|
||||
CBlockIndex* block_index = CreateBlockIndexWithNbits(nbits);
|
||||
CChain chain;
|
||||
chain.SetTip(block_index);
|
||||
return chain;
|
||||
}
|
||||
|
||||
static void RejectDifficultyMismatch(double difficulty, double expected_difficulty) {
|
||||
BOOST_CHECK_MESSAGE(
|
||||
DoubleEquals(difficulty, expected_difficulty, 0.00001),
|
||||
@@ -43,12 +35,7 @@ static void RejectDifficultyMismatch(double difficulty, double expected_difficul
|
||||
static void TestDifficulty(uint32_t nbits, double expected_difficulty)
|
||||
{
|
||||
CBlockIndex* block_index = CreateBlockIndexWithNbits(nbits);
|
||||
/* Since we are passing in block index explicitly,
|
||||
* there is no need to set up anything within the chain itself.
|
||||
*/
|
||||
CChain chain;
|
||||
|
||||
double difficulty = GetDifficulty(chain, block_index);
|
||||
double difficulty = GetDifficulty(block_index);
|
||||
delete block_index;
|
||||
|
||||
RejectDifficultyMismatch(difficulty, expected_difficulty);
|
||||
@@ -84,43 +71,8 @@ BOOST_AUTO_TEST_CASE(get_difficulty_for_very_high_target)
|
||||
// Verify that difficulty is 1.0 for an empty chain.
|
||||
BOOST_AUTO_TEST_CASE(get_difficulty_for_null_tip)
|
||||
{
|
||||
CChain chain;
|
||||
double difficulty = GetDifficulty(chain, nullptr);
|
||||
double difficulty = GetDifficulty(nullptr);
|
||||
RejectDifficultyMismatch(difficulty, 1.0);
|
||||
}
|
||||
|
||||
/* Verify that if difficulty is based upon the block index
|
||||
* in the chain, if no block index is explicitly specified.
|
||||
*/
|
||||
BOOST_AUTO_TEST_CASE(get_difficulty_for_null_block_index)
|
||||
{
|
||||
CChain chain = CreateChainWithNbits(0x1df88f6f);
|
||||
|
||||
double difficulty = GetDifficulty(chain, nullptr);
|
||||
delete chain.Tip();
|
||||
|
||||
double expected_difficulty = 0.004023;
|
||||
|
||||
RejectDifficultyMismatch(difficulty, expected_difficulty);
|
||||
}
|
||||
|
||||
/* Verify that difficulty is based upon the explicitly specified
|
||||
* block index rather than being taken from the provided chain,
|
||||
* when both are present.
|
||||
*/
|
||||
BOOST_AUTO_TEST_CASE(get_difficulty_for_block_index_overrides_tip)
|
||||
{
|
||||
CChain chain = CreateChainWithNbits(0x1df88f6f);
|
||||
/* This block index's nbits should be used
|
||||
* instead of the chain's when calculating difficulty.
|
||||
*/
|
||||
CBlockIndex* override_block_index = CreateBlockIndexWithNbits(0x12345678);
|
||||
|
||||
double difficulty = GetDifficulty(chain, override_block_index);
|
||||
delete chain.Tip();
|
||||
delete override_block_index;
|
||||
|
||||
RejectDifficultyMismatch(difficulty, 5913134931067755359633408.0);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
Reference in New Issue
Block a user