LCOV - code coverage report
Current view: top level - src/test - upgrades_tests.cpp (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 90 90 100.0 %
Date: 2025-02-23 09:33:43 Functions: 10 10 100.0 %

          Line data    Source code
       1             : // Copyright (c) 2017 The Zcash Core developers
       2             : // Copyright (c) 2020 The PIVX Core developers
       3             : // Distributed under the MIT software license, see the accompanying
       4             : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
       5             : 
       6             : #include "chainparams.h"
       7             : #include "consensus/upgrades.h"
       8             : #include "optional.h"
       9             : #include "test/test_pivx.h"
      10             : 
      11             : #include <boost/test/unit_test.hpp>
      12             : 
      13             : struct UpgradesTest : public TestingSetup
      14             : {
      15             :     int DefaultActivation[Consensus::MAX_NETWORK_UPGRADES];
      16           4 :     UpgradesTest()
      17           4 :     {
      18           4 :         SelectParams(CBaseChainParams::REGTEST);
      19             :         // Save activation heights in DefaultActivation and set all upgrades to inactive.
      20          64 :         for (uint32_t idx = Consensus::BASE_NETWORK + 1; idx < Consensus::MAX_NETWORK_UPGRADES; idx++) {
      21          60 :             DefaultActivation[idx] = Params().GetConsensus().vUpgrades[idx].nActivationHeight;
      22          60 :             UpdateNetworkUpgradeParameters(Consensus::UpgradeIndex(idx), Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
      23             :         }
      24           4 :     }
      25           4 :     ~UpgradesTest()
      26           4 :     {
      27             :         // Revert to default
      28          64 :         for (uint32_t idx = Consensus::BASE_NETWORK + 1; idx < Consensus::MAX_NETWORK_UPGRADES; idx++) {
      29          60 :             UpdateNetworkUpgradeParameters(Consensus::UpgradeIndex(idx), DefaultActivation[idx]);
      30             :         }
      31           4 :         SelectParams(CBaseChainParams::MAIN);
      32           4 :     }
      33             : };
      34             : 
      35             : BOOST_FIXTURE_TEST_SUITE(network_upgrades_tests, UpgradesTest)
      36             : 
      37           2 : BOOST_AUTO_TEST_CASE(networkUpgradeStateTest)
      38             : {
      39           1 :     const Consensus::Params& params = Params().GetConsensus();
      40             : 
      41             :     // Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT
      42           1 :     BOOST_CHECK_EQUAL(
      43             :             NetworkUpgradeState(0, params, Consensus::UPGRADE_TESTDUMMY),
      44             :             UPGRADE_DISABLED);
      45           1 :     BOOST_CHECK_EQUAL(
      46             :             NetworkUpgradeState(1000000, params, Consensus::UPGRADE_TESTDUMMY),
      47             :             UPGRADE_DISABLED);
      48             : 
      49           1 :     UpdateNetworkUpgradeParameters(Consensus::UPGRADE_TESTDUMMY, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
      50             : 
      51           1 :     BOOST_CHECK_EQUAL(
      52             :             NetworkUpgradeState(0, params, Consensus::UPGRADE_TESTDUMMY),
      53             :             UPGRADE_ACTIVE);
      54           1 :     BOOST_CHECK_EQUAL(
      55             :             NetworkUpgradeState(1000000, params, Consensus::UPGRADE_TESTDUMMY),
      56             :             UPGRADE_ACTIVE);
      57             : 
      58           1 :     int nActivationHeight = 100;
      59           1 :     UpdateNetworkUpgradeParameters(Consensus::UPGRADE_TESTDUMMY, nActivationHeight);
      60             : 
      61           1 :     BOOST_CHECK_EQUAL(
      62             :             NetworkUpgradeState(0, params, Consensus::UPGRADE_TESTDUMMY),
      63             :             UPGRADE_PENDING);
      64           1 :     BOOST_CHECK_EQUAL(
      65             :             NetworkUpgradeState(nActivationHeight - 1, params, Consensus::UPGRADE_TESTDUMMY),
      66             :             UPGRADE_PENDING);
      67           1 :     BOOST_CHECK_EQUAL(
      68             :             NetworkUpgradeState(nActivationHeight, params, Consensus::UPGRADE_TESTDUMMY),
      69             :             UPGRADE_ACTIVE);
      70           1 :     BOOST_CHECK_EQUAL(
      71             :             NetworkUpgradeState(1000000, params, Consensus::UPGRADE_TESTDUMMY),
      72             :             UPGRADE_ACTIVE);
      73           1 : }
      74             : 
      75           2 : BOOST_AUTO_TEST_CASE(IsActivationHeightTest)
      76             : {
      77           1 :     const Consensus::Params& params = Params().GetConsensus();
      78             : 
      79             :     // Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT
      80           2 :     BOOST_CHECK(!IsActivationHeight(-1, params, Consensus::UPGRADE_TESTDUMMY));
      81           2 :     BOOST_CHECK(!IsActivationHeight(0, params, Consensus::UPGRADE_TESTDUMMY));
      82           2 :     BOOST_CHECK(!IsActivationHeight(1, params, Consensus::UPGRADE_TESTDUMMY));
      83           2 :     BOOST_CHECK(!IsActivationHeight(1000000, params, Consensus::UPGRADE_TESTDUMMY));
      84             : 
      85           1 :     UpdateNetworkUpgradeParameters(Consensus::UPGRADE_TESTDUMMY, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
      86             : 
      87           2 :     BOOST_CHECK(!IsActivationHeight(-1, params, Consensus::UPGRADE_TESTDUMMY));
      88           2 :     BOOST_CHECK(IsActivationHeight(0, params, Consensus::UPGRADE_TESTDUMMY));
      89           2 :     BOOST_CHECK(!IsActivationHeight(1, params, Consensus::UPGRADE_TESTDUMMY));
      90           2 :     BOOST_CHECK(!IsActivationHeight(1000000, params, Consensus::UPGRADE_TESTDUMMY));
      91             : 
      92           1 :     int nActivationHeight = 100;
      93           1 :     UpdateNetworkUpgradeParameters(Consensus::UPGRADE_TESTDUMMY, nActivationHeight);
      94             : 
      95           2 :     BOOST_CHECK(!IsActivationHeight(-1, params, Consensus::UPGRADE_TESTDUMMY));
      96           2 :     BOOST_CHECK(!IsActivationHeight(0, params, Consensus::UPGRADE_TESTDUMMY));
      97           2 :     BOOST_CHECK(!IsActivationHeight(1, params, Consensus::UPGRADE_TESTDUMMY));
      98           2 :     BOOST_CHECK(!IsActivationHeight(nActivationHeight - 1, params, Consensus::UPGRADE_TESTDUMMY));
      99           2 :     BOOST_CHECK(IsActivationHeight(nActivationHeight, params, Consensus::UPGRADE_TESTDUMMY));
     100           2 :     BOOST_CHECK(!IsActivationHeight(nActivationHeight + 1, params, Consensus::UPGRADE_TESTDUMMY));
     101           2 :     BOOST_CHECK(!IsActivationHeight(1000000, params, Consensus::UPGRADE_TESTDUMMY));
     102           1 : }
     103             : 
     104           2 : BOOST_AUTO_TEST_CASE(IsActivationHeightForAnyUpgradeTest)
     105             : {
     106           1 :     const Consensus::Params& params = Params().GetConsensus();
     107             : 
     108             :     // Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT
     109           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(-1, params));
     110           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(0, params));
     111           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(1, params));
     112           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(1000000, params));
     113             : 
     114           1 :     UpdateNetworkUpgradeParameters(Consensus::UPGRADE_TESTDUMMY, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
     115             : 
     116           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(-1, params));
     117           2 :     BOOST_CHECK(IsActivationHeightForAnyUpgrade(0, params));
     118           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(1, params));
     119           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(1000000, params));
     120             : 
     121           1 :     int nActivationHeight = 100;
     122           1 :     UpdateNetworkUpgradeParameters(Consensus::UPGRADE_TESTDUMMY, nActivationHeight);
     123             : 
     124           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(-1, params));
     125           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(0, params));
     126           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(1, params));
     127           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(nActivationHeight - 1, params));
     128           2 :     BOOST_CHECK(IsActivationHeightForAnyUpgrade(nActivationHeight, params));
     129           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(nActivationHeight + 1, params));
     130           2 :     BOOST_CHECK(!IsActivationHeightForAnyUpgrade(1000000, params));
     131           1 : }
     132             : 
     133           2 : BOOST_AUTO_TEST_CASE(NextActivationHeightTest)
     134             : {
     135           1 :     const Consensus::Params& params = Params().GetConsensus();
     136             : 
     137             :     // Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT
     138           2 :     BOOST_CHECK(NextActivationHeight(-1, params) == nullopt);
     139           2 :     BOOST_CHECK(NextActivationHeight(0, params) == nullopt);
     140           2 :     BOOST_CHECK(NextActivationHeight(1, params) == nullopt);
     141           2 :     BOOST_CHECK(NextActivationHeight(1000000, params) == nullopt);
     142             : 
     143           1 :     UpdateNetworkUpgradeParameters(Consensus::UPGRADE_TESTDUMMY, Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
     144             : 
     145           2 :     BOOST_CHECK(NextActivationHeight(-1, params) == nullopt);
     146           2 :     BOOST_CHECK(NextActivationHeight(0, params) == nullopt);
     147           2 :     BOOST_CHECK(NextActivationHeight(1, params) == nullopt);
     148           2 :     BOOST_CHECK(NextActivationHeight(1000000, params) == nullopt);
     149             : 
     150           1 :     int nActivationHeight = 100;
     151           1 :     UpdateNetworkUpgradeParameters(Consensus::UPGRADE_TESTDUMMY, nActivationHeight);
     152             : 
     153           2 :     BOOST_CHECK(NextActivationHeight(-1, params) == nullopt);
     154           3 :     BOOST_CHECK(NextActivationHeight(0, params) == nActivationHeight);
     155           3 :     BOOST_CHECK(NextActivationHeight(1, params) == nActivationHeight);
     156           3 :     BOOST_CHECK(NextActivationHeight(nActivationHeight - 1, params) == nActivationHeight);
     157           2 :     BOOST_CHECK(NextActivationHeight(nActivationHeight, params) == nullopt);
     158           2 :     BOOST_CHECK(NextActivationHeight(nActivationHeight + 1, params) == nullopt);
     159           2 :     BOOST_CHECK(NextActivationHeight(1000000, params) == nullopt);
     160           1 : }
     161             : 
     162             : BOOST_AUTO_TEST_SUITE_END()

Generated by: LCOV version 1.14