Changeset View
Changeset View
Standalone View
Standalone View
src/test/main_tests.cpp
Show All 9 Lines | |||||
#include <boost/signals2/signal.hpp> | #include <boost/signals2/signal.hpp> | ||||
#include <boost/test/unit_test.hpp> | #include <boost/test/unit_test.hpp> | ||||
BOOST_FIXTURE_TEST_SUITE(main_tests, TestingSetup) | BOOST_FIXTURE_TEST_SUITE(main_tests, TestingSetup) | ||||
static void TestBlockSubsidyHalvings(const Consensus::Params &consensusParams) { | static void TestBlockSubsidyHalvings(const Consensus::Params &consensusParams) { | ||||
int maxHalvings = 64; | int maxHalvings = 64; | ||||
CAmount nInitialSubsidy = 50 * COIN.GetSatoshis(); | Amount nInitialSubsidy = 50 * COIN; | ||||
CAmount nPreviousSubsidy = nInitialSubsidy * 2; // for height == 0 | Amount nPreviousSubsidy = 2 * nInitialSubsidy; // for height == 0 | ||||
BOOST_CHECK_EQUAL(nPreviousSubsidy, nInitialSubsidy * 2); | BOOST_CHECK_EQUAL(nPreviousSubsidy, 2 * nInitialSubsidy); | ||||
for (int nHalvings = 0; nHalvings < maxHalvings; nHalvings++) { | for (int nHalvings = 0; nHalvings < maxHalvings; nHalvings++) { | ||||
int nHeight = nHalvings * consensusParams.nSubsidyHalvingInterval; | int nHeight = nHalvings * consensusParams.nSubsidyHalvingInterval; | ||||
CAmount nSubsidy = GetBlockSubsidy(nHeight, consensusParams); | Amount nSubsidy = GetBlockSubsidy(nHeight, consensusParams); | ||||
BOOST_CHECK(nSubsidy <= nInitialSubsidy); | BOOST_CHECK(nSubsidy <= nInitialSubsidy); | ||||
BOOST_CHECK_EQUAL(nSubsidy, nPreviousSubsidy / 2); | BOOST_CHECK_EQUAL(nSubsidy, nPreviousSubsidy / 2); | ||||
nPreviousSubsidy = nSubsidy; | nPreviousSubsidy = nSubsidy; | ||||
} | } | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK_EQUAL( | ||||
GetBlockSubsidy(maxHalvings * consensusParams.nSubsidyHalvingInterval, | GetBlockSubsidy(maxHalvings * consensusParams.nSubsidyHalvingInterval, | ||||
consensusParams), | consensusParams), | ||||
0); | 0); | ||||
Show All 10 Lines | TestBlockSubsidyHalvings( | ||||
Params(CBaseChainParams::MAIN).GetConsensus()); // As in main | Params(CBaseChainParams::MAIN).GetConsensus()); // As in main | ||||
TestBlockSubsidyHalvings(150); // As in regtest | TestBlockSubsidyHalvings(150); // As in regtest | ||||
TestBlockSubsidyHalvings(1000); // Just another interval | TestBlockSubsidyHalvings(1000); // Just another interval | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(subsidy_limit_test) { | BOOST_AUTO_TEST_CASE(subsidy_limit_test) { | ||||
const Consensus::Params &consensusParams = | const Consensus::Params &consensusParams = | ||||
Params(CBaseChainParams::MAIN).GetConsensus(); | Params(CBaseChainParams::MAIN).GetConsensus(); | ||||
CAmount nSum = 0; | Amount nSum = 0; | ||||
for (int nHeight = 0; nHeight < 14000000; nHeight += 1000) { | for (int nHeight = 0; nHeight < 14000000; nHeight += 1000) { | ||||
CAmount nSubsidy = GetBlockSubsidy(nHeight, consensusParams); | Amount nSubsidy = GetBlockSubsidy(nHeight, consensusParams); | ||||
BOOST_CHECK(nSubsidy <= 50 * COIN); | BOOST_CHECK(nSubsidy <= 50 * COIN); | ||||
nSum += nSubsidy * 1000; | nSum += 1000 * nSubsidy; | ||||
BOOST_CHECK(MoneyRange(nSum)); | BOOST_CHECK(MoneyRange(nSum)); | ||||
} | } | ||||
BOOST_CHECK_EQUAL(nSum, 2099999997690000ULL); | BOOST_CHECK_EQUAL(nSum, 2099999997690000ULL); | ||||
} | } | ||||
bool ReturnFalse() { | bool ReturnFalse() { | ||||
return false; | return false; | ||||
} | } | ||||
Show All 17 Lines |