diff --git a/src/gtest/test_checktransaction.cpp b/src/gtest/test_checktransaction.cpp index d7527dbac..4e2affcd9 100644 --- a/src/gtest/test_checktransaction.cpp +++ b/src/gtest/test_checktransaction.cpp @@ -684,7 +684,9 @@ TEST(checktransaction_tests, OverwinteredContextualCreateTx) { SelectParams(CBaseChainParams::REGTEST); const Consensus::Params& consensusParams = Params().GetConsensus(); int activationHeight = 5; + int saplingActivationHeight = 30; UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, activationHeight); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, saplingActivationHeight); { CMutableTransaction mtx = CreateNewContextualCMutableTransaction( @@ -704,10 +706,64 @@ TEST(checktransaction_tests, OverwinteredContextualCreateTx) { EXPECT_EQ(mtx.nVersion, 3); EXPECT_EQ(mtx.fOverwintered, true); EXPECT_EQ(mtx.nVersionGroupId, OVERWINTER_VERSION_GROUP_ID); - EXPECT_EQ(mtx.nExpiryHeight, 0); + EXPECT_EQ(mtx.nExpiryHeight, activationHeight + expiryDelta); + } + + // Close to Sapling activation + { + CMutableTransaction mtx = CreateNewContextualCMutableTransaction( + consensusParams, saplingActivationHeight - expiryDelta - 2); + + EXPECT_EQ(mtx.fOverwintered, true); + EXPECT_EQ(mtx.nVersionGroupId, OVERWINTER_VERSION_GROUP_ID); + EXPECT_EQ(mtx.nVersion, OVERWINTER_TX_VERSION); + EXPECT_EQ(mtx.nExpiryHeight, saplingActivationHeight - 2); + } + + { + CMutableTransaction mtx = CreateNewContextualCMutableTransaction( + consensusParams, saplingActivationHeight - expiryDelta - 1); + + EXPECT_EQ(mtx.fOverwintered, true); + EXPECT_EQ(mtx.nVersionGroupId, OVERWINTER_VERSION_GROUP_ID); + EXPECT_EQ(mtx.nVersion, OVERWINTER_TX_VERSION); + EXPECT_EQ(mtx.nExpiryHeight, saplingActivationHeight - 1); + } + + { + CMutableTransaction mtx = CreateNewContextualCMutableTransaction( + consensusParams, saplingActivationHeight - expiryDelta); + + EXPECT_EQ(mtx.fOverwintered, true); + EXPECT_EQ(mtx.nVersionGroupId, OVERWINTER_VERSION_GROUP_ID); + EXPECT_EQ(mtx.nVersion, OVERWINTER_TX_VERSION); + EXPECT_EQ(mtx.nExpiryHeight, saplingActivationHeight - 1); + } + + // Just before Sapling activation + { + CMutableTransaction mtx = CreateNewContextualCMutableTransaction( + consensusParams, saplingActivationHeight - 1); + + EXPECT_EQ(mtx.fOverwintered, true); + EXPECT_EQ(mtx.nVersionGroupId, OVERWINTER_VERSION_GROUP_ID); + EXPECT_EQ(mtx.nVersion, OVERWINTER_TX_VERSION); + EXPECT_EQ(mtx.nExpiryHeight, saplingActivationHeight - 1); + } + + // Sapling activates + { + CMutableTransaction mtx = CreateNewContextualCMutableTransaction( + consensusParams, saplingActivationHeight); + + EXPECT_EQ(mtx.fOverwintered, true); + EXPECT_EQ(mtx.nVersionGroupId, SAPLING_VERSION_GROUP_ID); + EXPECT_EQ(mtx.nVersion, SAPLING_TX_VERSION); + EXPECT_EQ(mtx.nExpiryHeight, saplingActivationHeight + expiryDelta); } // Revert to default + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT); UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT); }