// Copyright (c) 2014-2018 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #include #include #include #include #include #include BOOST_FIXTURE_TEST_SUITE(main_tests, TestingSetup) static void TestBlockSubsidyHalvings(const Consensus::Params& consensusParams) { // tested in dogecoin_tests.cpp //int maxHalvings = 64; //CAmount nInitialSubsidy = 50 * COIN; //CAmount nPreviousSubsidy = nInitialSubsidy * 2; // for height == 0 //BOOST_CHECK_EQUAL(nPreviousSubsidy, nInitialSubsidy * 2); //for (int nHalvings = 0; nHalvings < maxHalvings; nHalvings++) { // int nHeight = nHalvings * consensusParams.nSubsidyHalvingInterval; // CAmount nSubsidy = GetBlockSubsidy(nHeight, consensusParams); // BOOST_CHECK(nSubsidy <= nInitialSubsidy); // BOOST_CHECK_EQUAL(nSubsidy, nPreviousSubsidy / 2); // nPreviousSubsidy = nSubsidy; //} //BOOST_CHECK_EQUAL(GetBlockSubsidy(maxHalvings * consensusParams.nSubsidyHalvingInterval, consensusParams), 0); } static void TestBlockSubsidyHalvings(int nSubsidyHalvingInterval) { // tested in dogecoin_tests.cpp //Consensus::Params consensusParams; //consensusParams.nSubsidyHalvingInterval = nSubsidyHalvingInterval; //TestBlockSubsidyHalvings(consensusParams); } BOOST_AUTO_TEST_CASE(block_subsidy_test) { // tested in dogecoin_tests.cpp //const auto chainParams = CreateChainParams(CBaseChainParams::MAIN); //TestBlockSubsidyHalvings(chainParams->GetConsensus()); // As in main //TestBlockSubsidyHalvings(150); // As in regtest //TestBlockSubsidyHalvings(1000); // Just another interval } BOOST_AUTO_TEST_CASE(subsidy_limit_test) { // tested in dogecoin_tests.cpp //const auto chainParams = CreateChainParams(CBaseChainParams::MAIN); //CAmount nSum = 0; //for (int nHeight = 0; nHeight < 14000000; nHeight += 1000) { // CAmount nSubsidy = GetBlockSubsidy(nHeight, chainParams->GetConsensus()); // BOOST_CHECK(nSubsidy <= 50 * COIN); // nSum += nSubsidy * 1000; // BOOST_CHECK(MoneyRange(nSum)); //} //BOOST_CHECK_EQUAL(nSum, CAmount{2099999997690000}); } static bool ReturnFalse() { return false; } static bool ReturnTrue() { return true; } BOOST_AUTO_TEST_CASE(test_combiner_all) { boost::signals2::signal Test; BOOST_CHECK(Test()); Test.connect(&ReturnFalse); BOOST_CHECK(!Test()); Test.connect(&ReturnTrue); BOOST_CHECK(!Test()); Test.disconnect(&ReturnFalse); BOOST_CHECK(Test()); Test.disconnect(&ReturnTrue); BOOST_CHECK(Test()); } BOOST_AUTO_TEST_SUITE_END()