Simplify amendment check using tweakedFeatures[] operator instead of count()

Co-authored-by: mvadari <8029314+mvadari@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-08-21 01:44:25 +00:00
committed by Mayukha Vadari
parent 0493180658
commit be5d105f07

View File

@@ -5988,12 +5988,12 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite
Account const buyer{"buyer"};
// Test with and without the amendment
for (auto const& tweakedFeatures : {
features - fixExpiredNFTokenOfferRemoval,
features | fixExpiredNFTokenOfferRemoval})
for (auto const& tweakedFeatures :
{features - fixExpiredNFTokenOfferRemoval,
features | fixExpiredNFTokenOfferRemoval})
{
bool const amendmentEnabled =
tweakedFeatures.count(fixExpiredNFTokenOfferRemoval) > 0;
bool const amendmentEnabled =
tweakedFeatures[fixExpiredNFTokenOfferRemoval];
Env env{*this, tweakedFeatures};
@@ -6001,14 +6001,17 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite
env.close();
// Create an NFToken
uint256 const nftID = token::getNextID(env, issuer, 0, tfTransferable);
uint256 const nftID =
token::getNextID(env, issuer, 0, tfTransferable);
env(token::mint(issuer, 0), txflags(tfTransferable));
env.close();
// Create an offer with a short expiration time (already expired)
std::uint32_t const expiration = lastClose(env) - 1; // 1 second ago
uint256 const sellOfferIndex = keylet::nftoffer(issuer, env.seq(issuer)).key;
std::uint32_t const expiration =
lastClose(env) - 1; // 1 second ago
uint256 const sellOfferIndex =
keylet::nftoffer(issuer, env.seq(issuer)).key;
env(token::createOffer(issuer, nftID, XRP(1)),
token::expiration(expiration),
txflags(tfSellNFToken));
@@ -6026,7 +6029,7 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite
// After amendment: expired offer should be deleted
// Owner count should be 1 (only NFT remains)
BEAST_EXPECT(ownerCount(env, issuer) == 1);
// Verify the offer is actually gone from ledger
BEAST_EXPECT(!env.le(keylet::nftoffer(sellOfferIndex)));
}
@@ -6035,13 +6038,14 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite
// Before amendment: expired offer remains on ledger
// Owner count should still be 2 (NFT + expired offer)
BEAST_EXPECT(ownerCount(env, issuer) == 2);
// Verify the offer still exists on ledger
BEAST_EXPECT(env.le(keylet::nftoffer(sellOfferIndex)));
}
// Test with buy offer as well
uint256 const buyOfferIndex = keylet::nftoffer(buyer, env.seq(buyer)).key;
uint256 const buyOfferIndex =
keylet::nftoffer(buyer, env.seq(buyer)).key;
env(token::createOffer(buyer, nftID, XRP(1)),
token::owner(issuer),
token::expiration(expiration)); // Also expired
@@ -6071,10 +6075,10 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite
if (!amendmentEnabled)
{
// Only test if offers still exist (before amendment)
env(token::brokerOffers(buyer, buyOfferIndex, sellOfferIndex),
env(token::brokerOffers(buyer, buyOfferIndex, sellOfferIndex),
ter(tecEXPIRED));
env.close();
// Offers should still exist
BEAST_EXPECT(ownerCount(env, issuer) == 2);
BEAST_EXPECT(ownerCount(env, buyer) == 1);
@@ -6083,13 +6087,15 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite
{
// With amendment, create fresh expired offers for brokered test
// (previous ones were already cleaned up)
uint256 const sellOfferIndex2 = keylet::nftoffer(issuer, env.seq(issuer)).key;
uint256 const sellOfferIndex2 =
keylet::nftoffer(issuer, env.seq(issuer)).key;
env(token::createOffer(issuer, nftID, XRP(1)),
token::expiration(expiration),
txflags(tfSellNFToken));
env.close();
uint256 const buyOfferIndex2 = keylet::nftoffer(buyer, env.seq(buyer)).key;
uint256 const buyOfferIndex2 =
keylet::nftoffer(buyer, env.seq(buyer)).key;
env(token::createOffer(buyer, nftID, XRP(1)),
token::owner(issuer),
token::expiration(expiration));
@@ -6099,7 +6105,7 @@ class NFTokenBaseUtil_test : public beast::unit_test::suite
env(token::brokerOffers(buyer, buyOfferIndex2, sellOfferIndex2),
ter(tecEXPIRED));
env.close();
// Both offers should be deleted
BEAST_EXPECT(ownerCount(env, issuer) == 1); // Only NFT remains
BEAST_EXPECT(ownerCount(env, buyer) == 0); // No offers