diff options
author | Suhas Daftuar <sdaftuar@chaincode.com> | 2016-03-09 09:48:20 -0500 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2016-03-15 16:54:39 +0100 |
commit | 7870debceba98f9b092586ab4f0c96a9b5d458fd (patch) | |
tree | b7f781b1ecc6ac617a299246a2fc92527aace153 /src/test/versionbits_tests.cpp | |
parent | 532cbb22b57f25c89df30588185b0db659871c86 (diff) |
Test versionbits deployments
Diffstat (limited to 'src/test/versionbits_tests.cpp')
-rw-r--r-- | src/test/versionbits_tests.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/test/versionbits_tests.cpp b/src/test/versionbits_tests.cpp index 63dc4726bc..1f86a06a3f 100644 --- a/src/test/versionbits_tests.cpp +++ b/src/test/versionbits_tests.cpp @@ -185,6 +185,28 @@ BOOST_AUTO_TEST_CASE(versionbits_test) .Mine(14333, TestTime(30003), 0).TestActive() .Mine(24000, TestTime(40000), 0).TestActive(); } + + // Sanity checks of version bit deployments + const Consensus::Params &mainnetParams = Params(CBaseChainParams::MAIN).GetConsensus(); + for (int i=0; i<(int) Consensus::MAX_VERSION_BITS_DEPLOYMENTS; i++) { + uint32_t bitmask = VersionBitsMask(mainnetParams, (Consensus::DeploymentPos)i); + // Make sure that no deployment tries to set an invalid bit. + BOOST_CHECK_EQUAL(bitmask & ~(uint32_t)VERSIONBITS_TOP_MASK, bitmask); + + // Verify that the deployment windows of different deployment using the + // same bit are disjoint. + // This test may need modification at such time as a new deployment + // is proposed that reuses the bit of an activated soft fork, before the + // end time of that soft fork. (Alternatively, the end time of that + // activated soft fork could be later changed to be earlier to avoid + // overlap.) + for (int j=i+1; j<(int) Consensus::MAX_VERSION_BITS_DEPLOYMENTS; j++) { + if (VersionBitsMask(mainnetParams, (Consensus::DeploymentPos)j) == bitmask) { + BOOST_CHECK(mainnetParams.vDeployments[j].nStartTime > mainnetParams.vDeployments[i].nTimeout || + mainnetParams.vDeployments[i].nStartTime > mainnetParams.vDeployments[j].nTimeout); + } + } + } } BOOST_AUTO_TEST_CASE(versionbits_computeblockversion) |