Mark featureSingleAssetVault as Supported::no

This commit is contained in:
Bronek Kozicki
2025-04-03 14:13:21 +01:00
parent af8ea3fb40
commit 591437b914
4 changed files with 48 additions and 33 deletions

View File

@@ -32,7 +32,7 @@
// If you add an amendment here, then do not forget to increment `numFeatures` // If you add an amendment here, then do not forget to increment `numFeatures`
// in include/xrpl/protocol/Feature.h. // in include/xrpl/protocol/Feature.h.
XRPL_FEATURE(SingleAssetVault, Supported::yes, VoteBehavior::DefaultNo) XRPL_FEATURE(SingleAssetVault, Supported::no, VoteBehavior::DefaultNo)
// Check flags in Credential transactions // Check flags in Credential transactions
XRPL_FIX (InvalidTxFlags, Supported::yes, VoteBehavior::DefaultNo) XRPL_FIX (InvalidTxFlags, Supported::yes, VoteBehavior::DefaultNo)
XRPL_FIX (FrozenLPTokenTransfer, Supported::yes, VoteBehavior::DefaultNo) XRPL_FIX (FrozenLPTokenTransfer, Supported::yes, VoteBehavior::DefaultNo)

View File

@@ -20,6 +20,7 @@
#include <test/jtx.h> #include <test/jtx.h>
#include <test/jtx/AMM.h> #include <test/jtx/AMM.h>
#include <test/jtx/AMMTest.h> #include <test/jtx/AMMTest.h>
#include <test/jtx/Env.h>
#include <test/jtx/amount.h> #include <test/jtx/amount.h>
#include <test/jtx/sendmax.h> #include <test/jtx/sendmax.h>
@@ -30,6 +31,7 @@
#include <xrpl/basics/Number.h> #include <xrpl/basics/Number.h>
#include <xrpl/protocol/AMMCore.h> #include <xrpl/protocol/AMMCore.h>
#include <xrpl/protocol/Feature.h> #include <xrpl/protocol/Feature.h>
#include <xrpl/protocol/TER.h>
#include <boost/regex.hpp> #include <boost/regex.hpp>
@@ -7146,31 +7148,44 @@ private:
void void
testFailedPseudoAccount() testFailedPseudoAccount()
{ {
testcase("Failed pseudo-account allocation");
using namespace test::jtx; using namespace test::jtx;
Env env{*this}; auto const testCase = [&](std::string suffix, FeatureBitset features) {
env.fund(XRP(30'000), gw, alice); testcase("Failed pseudo-account allocation " + suffix);
env.close(); Env env{*this, features};
env(trust(alice, gw["USD"](30'000), 0)); env.fund(XRP(30'000), gw, alice);
env(pay(gw, alice, USD(10'000))); env.close();
env.close(); env(trust(alice, gw["USD"](30'000), 0));
env(pay(gw, alice, USD(10'000)));
env.close();
STAmount amount = XRP(10'000); STAmount amount = XRP(10'000);
STAmount amount2 = USD(10'000); STAmount amount2 = USD(10'000);
auto const keylet = keylet::amm(amount.issue(), amount2.issue()); auto const keylet = keylet::amm(amount.issue(), amount2.issue());
for (int i = 0; i < 256; ++i) for (int i = 0; i < 256; ++i)
{ {
AccountID const accountId = AccountID const accountId =
ripple::pseudoAccountAddress(*env.current(), keylet.key); ripple::pseudoAccountAddress(*env.current(), keylet.key);
env(pay(env.master.id(), accountId, XRP(1000)), env(pay(env.master.id(), accountId, XRP(1000)),
seq(autofill), seq(autofill),
fee(autofill), fee(autofill),
sig(autofill)); sig(autofill));
} }
AMM ammAlice(env, alice, amount, amount2, ter(terADDRESS_COLLISION)); AMM ammAlice(
env,
alice,
amount,
amount2,
features[featureSingleAssetVault] ? ter{terADDRESS_COLLISION}
: ter{tecDUPLICATE});
};
testCase("tecDUPLICATE", supported_amendments());
testCase(
"terADDRESS_COLLISION",
supported_amendments() | featureSingleAssetVault);
} }
void void

View File

@@ -421,7 +421,7 @@ class Vault_test : public beast::unit_test::suite
Account const& owner, Account const& owner,
Account const& depositor, Account const& depositor,
Account const& charlie)> setup) { Account const& charlie)> setup) {
Env env{*this}; Env env{*this, supported_amendments() | featureSingleAssetVault};
Account issuer{"issuer"}; Account issuer{"issuer"};
Account owner{"owner"}; Account owner{"owner"};
Account depositor{"depositor"}; Account depositor{"depositor"};
@@ -502,7 +502,7 @@ class Vault_test : public beast::unit_test::suite
Account const& depositor, Account const& depositor,
Asset const& asset, Asset const& asset,
Vault& vault)> test) { Vault& vault)> test) {
Env env{*this}; Env env{*this, supported_amendments() | featureSingleAssetVault};
Account issuer{"issuer"}; Account issuer{"issuer"};
Account owner{"owner"}; Account owner{"owner"};
Account depositor{"depositor"}; Account depositor{"depositor"};
@@ -724,7 +724,7 @@ class Vault_test : public beast::unit_test::suite
testCreateFailIOU() testCreateFailIOU()
{ {
using namespace test::jtx; using namespace test::jtx;
Env env{*this}; Env env{*this, supported_amendments() | featureSingleAssetVault};
Account issuer{"issuer"}; Account issuer{"issuer"};
Account owner{"owner"}; Account owner{"owner"};
Account depositor{"depositor"}; Account depositor{"depositor"};
@@ -745,7 +745,7 @@ class Vault_test : public beast::unit_test::suite
testCreateFailMPT() testCreateFailMPT()
{ {
using namespace test::jtx; using namespace test::jtx;
Env env{*this}; Env env{*this, supported_amendments() | featureSingleAssetVault};
Account issuer{"issuer"}; Account issuer{"issuer"};
Account owner{"owner"}; Account owner{"owner"};
Account depositor{"depositor"}; Account depositor{"depositor"};
@@ -766,7 +766,7 @@ class Vault_test : public beast::unit_test::suite
testNonTransferableShares() testNonTransferableShares()
{ {
using namespace test::jtx; using namespace test::jtx;
Env env{*this}; Env env{*this, supported_amendments() | featureSingleAssetVault};
Account issuer{"issuer"}; Account issuer{"issuer"};
Account owner{"owner"}; Account owner{"owner"};
Account depositor{"depositor"}; Account depositor{"depositor"};
@@ -885,7 +885,7 @@ class Vault_test : public beast::unit_test::suite
Asset const& asset, Asset const& asset,
Vault& vault, Vault& vault,
MPTTester& mptt)> test) { MPTTester& mptt)> test) {
Env env{*this}; Env env{*this, supported_amendments() | featureSingleAssetVault};
Account issuer{"issuer"}; Account issuer{"issuer"};
Account owner{"owner"}; Account owner{"owner"};
Account depositor{"depositor"}; Account depositor{"depositor"};
@@ -1033,7 +1033,7 @@ class Vault_test : public beast::unit_test::suite
{ {
testcase("private vault"); testcase("private vault");
Env env{*this}; Env env{*this, supported_amendments() | featureSingleAssetVault};
Account issuer{"issuer"}; Account issuer{"issuer"};
Account owner{"owner"}; Account owner{"owner"};
Account depositor{"depositor"}; Account depositor{"depositor"};
@@ -1212,7 +1212,7 @@ class Vault_test : public beast::unit_test::suite
testWithIOU() testWithIOU()
{ {
testcase("IOU"); testcase("IOU");
Env env{*this}; Env env{*this, supported_amendments() | featureSingleAssetVault};
Account const owner{"owner"}; Account const owner{"owner"};
Account const issuer{"issuer"}; Account const issuer{"issuer"};
Account const charlie{"charlie"}; Account const charlie{"charlie"};
@@ -1315,7 +1315,7 @@ class Vault_test : public beast::unit_test::suite
using namespace test::jtx; using namespace test::jtx;
testcase("failed pseudo-account allocation"); testcase("failed pseudo-account allocation");
Env env{*this}; Env env{*this, supported_amendments() | featureSingleAssetVault};
Account const owner{"owner"}; Account const owner{"owner"};
Vault vault{env}; Vault vault{env};
env.fund(XRP(1000), owner); env.fund(XRP(1000), owner);
@@ -1342,7 +1342,7 @@ class Vault_test : public beast::unit_test::suite
testRPC() testRPC()
{ {
testcase("RPC"); testcase("RPC");
Env env{*this}; Env env{*this, supported_amendments() | featureSingleAssetVault};
Account const owner{"owner"}; Account const owner{"owner"};
Account const issuer{"issuer"}; Account const issuer{"issuer"};
Vault vault{env}; Vault vault{env};

View File

@@ -78,8 +78,8 @@ class Invariants_test : public beast::unit_test::suite
Preclose const& preclose = {}) Preclose const& preclose = {})
{ {
using namespace test::jtx; using namespace test::jtx;
FeatureBitset amendments = FeatureBitset amendments = supported_amendments() |
supported_amendments() | featureInvariantsV1_1; featureInvariantsV1_1 | featureSingleAssetVault;
Env env{*this, amendments}; Env env{*this, amendments};
Account const A1{"A1"}; Account const A1{"A1"};