2#include <test/jtx/Account.h>
3#include <test/jtx/Env.h>
4#include <test/jtx/TestHelpers.h>
5#include <test/jtx/amount.h>
6#include <test/jtx/balance.h>
7#include <test/jtx/did.h>
8#include <test/jtx/pay.h>
9#include <test/jtx/ter.h>
10#include <test/jtx/txflags.h>
12#include <xrpl/beast/unit_test/suite.h>
13#include <xrpl/protocol/Feature.h>
14#include <xrpl/protocol/Indexes.h>
15#include <xrpl/protocol/SField.h>
16#include <xrpl/protocol/TER.h>
30 Env env{*
this, features - featureDID};
52 Env env{*
this, features};
57 auto const acctReserve = env.
current()->fees().reserve;
58 auto const incReserve = env.
current()->fees().increment;
59 auto const baseFee = env.
current()->fees().base;
60 env.
fund(acctReserve, alice);
62 BEAST_EXPECT(env.
balance(alice) == acctReserve);
72 BEAST_EXPECT(env.
balance(alice) == acctReserve + incReserve +
drops(baseFee - 1));
103 Env env{*
this, features};
145 auto const fixEnabled = env.
current()->rules().enabled(fixEmptyDID);
148 auto const expectedOwnerReserve = fixEnabled ? 0 : 1;
149 BEAST_EXPECT(
ownerCount(env, alice) == expectedOwnerReserve);
162 Env env{*
this, features};
193 Env env{*
this, features};
196 Account const charlie{
"charlie"};
199 Account const francis{
"francis"};
200 Account const george{
"george"};
201 env.
fund(
XRP(5000), alice, bob, charlie, dave, edna, francis, george);
244 Env env{*
this, features};
249 auto const ar = env.
le(alice);
257 BEAST_EXPECT(sleDID);
258 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
259 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
260 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
268 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
269 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
270 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
279 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
280 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
281 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
290 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
291 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
292 BEAST_EXPECT(
checkVL((*sleDID)[sfData], initialData));
300 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
301 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
302 BEAST_EXPECT(
checkVL((*sleDID)[sfData], initialData));
310 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
311 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
312 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
321 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], secondURI));
322 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
323 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
332 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
333 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], secondDocument));
334 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
343 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
344 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
345 BEAST_EXPECT(
checkVL((*sleDID)[sfData], secondData));
353 BEAST_EXPECT(!sleDID);
TestcaseT testcase
Memberspace for declaring test cases.
Immutable cryptographic account descriptor.
AccountID id() const
Returns the Account ID.
A transaction testing environment.
bool close(NetClock::time_point closeTime, std::optional< std::chrono::milliseconds > consensusDelay=std::nullopt)
Close and advance the ledger.
SLE::const_pointer le(Account const &account) const
Return an account root.
void fund(bool setDefaultRipple, STAmount const &amount, Account const &account)
PrettyAmount balance(Account const &account) const
Returns the XRP balance on an account.
std::shared_ptr< OpenView const > current() const
Returns the current ledger.
Set the expected result code for a JTx The test will fail if the code doesn't match.
Sets the optional Data on a DIDSet.
Sets the optional DIDDocument on a DIDSet.
Sets the optional URI on a DIDSet.
Keylet did(AccountID const &account) noexcept
json::Value setValid(jtx::Account const &account)
json::Value set(jtx::Account const &account)
json::Value del(jtx::Account const &account)
json::Value pay(AccountID const &account, AccountID const &to, AnyAmount amount)
Create a payment.
XrpT const XRP
Converts to XRP Issue or STAmount.
std::uint32_t ownerCount(Env const &env, Account const &account)
FeatureBitset testableAmendments()
PrettyAmount drops(Integer i)
Returns an XRP PrettyAmount, which is trivially convertible to STAmount.
bool checkVL(Slice const &result, std::string const &expected)
BEAST_DEFINE_TESTSUITE(AMMClawback, app, xrpl)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
@ tecINSUFFICIENT_RESERVE
void testSetValidInitial(FeatureBitset features)
void testDeleteInvalid(FeatureBitset features)
void testEnabled(FeatureBitset features)
void testAccountReserve(FeatureBitset features)
void run() override
Runs the suite.
void testSetModify(FeatureBitset features)
void testSetInvalid(FeatureBitset features)