diff --git a/src/test/transaction_tests.cpp b/src/test/transaction_tests.cpp index 80173a25f..094cd5a90 100644 --- a/src/test/transaction_tests.cpp +++ b/src/test/transaction_tests.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include @@ -398,12 +399,9 @@ BOOST_AUTO_TEST_CASE(test_basic_joinsplit_verification) } } -BOOST_AUTO_TEST_CASE(test_simple_joinsplit_invalidity) +void test_simple_joinsplit_invalidity(uint32_t consensusBranchId, CMutableTransaction tx) { - uint32_t consensusBranchId = SPROUT_BRANCH_ID; auto verifier = libzcash::ProofVerifier::Strict(); - CMutableTransaction tx; - tx.nVersion = 2; { // Ensure that empty vin/vout remain invalid without // joinsplits. @@ -531,9 +529,34 @@ BOOST_AUTO_TEST_CASE(test_simple_joinsplit_invalidity) } } -BOOST_AUTO_TEST_CASE(test_Get) +BOOST_AUTO_TEST_CASE(test_simple_joinsplit_invalidity_driver) { + { + CMutableTransaction mtx; + mtx.nVersion = 2; + test_simple_joinsplit_invalidity(SPROUT_BRANCH_ID, mtx); + } + { + // Switch to regtest parameters so we can activate Overwinter + SelectParams(CBaseChainParams::REGTEST); + + CMutableTransaction mtx; + mtx.fOverwintered = true; + mtx.nVersionGroupId = OVERWINTER_VERSION_GROUP_ID; + mtx.nVersion = 3; + + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE); + test_simple_joinsplit_invalidity(NetworkUpgradeInfo[Consensus::UPGRADE_OVERWINTER].nBranchId, mtx); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT); + + // Switch back to mainnet parameters as originally selected in test fixture + SelectParams(CBaseChainParams::MAIN); + } +} + +// Parameterized testing over consensus branch ids +BOOST_DATA_TEST_CASE(test_Get, boost::unit_test::data::xrange(static_cast(Consensus::MAX_NETWORK_UPGRADES))) { - uint32_t consensusBranchId = SPROUT_BRANCH_ID; + uint32_t consensusBranchId = NetworkUpgradeInfo[sample].nBranchId; CBasicKeyStore keystore; CCoinsView coinsDummy;