21#include <xrpl/protocol/Feature.h>
22#include <xrpl/protocol/Indexes.h>
47 Env env{*
this, features - featureDID};
49 env.fund(
XRP(5000), alice);
67 using namespace test::jtx;
69 Env env{*
this, features};
74 auto const acctReserve = env.current()->fees().accountReserve(0);
75 auto const incReserve = env.current()->fees().increment;
76 env.fund(acctReserve, alice);
78 BEAST_EXPECT(env.balance(alice) == acctReserve);
87 env(
pay(env.master, alice, incReserve +
drops(19)));
88 BEAST_EXPECT(env.balance(alice) == acctReserve + incReserve +
drops(9));
97 env(
pay(env.master, alice,
drops(11)));
119 Env env{*
this, features};
121 env.fund(
XRP(5000), alice);
168 auto const fixEnabled = env.current()->rules().enabled(fixEmptyDID);
173 auto const expectedOwnerReserve = fixEnabled ? 0 : 1;
174 BEAST_EXPECT(
ownerCount(env, alice) == expectedOwnerReserve);
187 Env env{*
this, features};
189 env.fund(
XRP(5000), alice);
218 Env env{*
this, features};
221 Account const charlie{
"charlie"};
224 Account const francis{
"francis"};
225 Account const george{
"george"};
226 env.fund(
XRP(5000), alice, bob, charlie, dave, edna, francis);
272 Env env{*
this, features};
274 env.fund(
XRP(5000), alice);
277 auto const ar = env.le(alice);
284 auto const sleDID = env.le(
keylet::did(alice.id()));
285 BEAST_EXPECT(sleDID);
286 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
287 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
288 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
295 auto const sleDID = env.le(
keylet::did(alice.id()));
296 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
297 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
298 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
306 auto const sleDID = env.le(
keylet::did(alice.id()));
307 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
308 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
309 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
317 auto const sleDID = env.le(
keylet::did(alice.id()));
318 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
319 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
320 BEAST_EXPECT(
checkVL((*sleDID)[sfData], initialData));
327 auto const sleDID = env.le(
keylet::did(alice.id()));
328 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
329 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
330 BEAST_EXPECT(
checkVL((*sleDID)[sfData], initialData));
337 auto const sleDID = env.le(
keylet::did(alice.id()));
338 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
339 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
340 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
348 auto const sleDID = env.le(
keylet::did(alice.id()));
349 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], secondURI));
350 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
351 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
359 auto const sleDID = env.le(
keylet::did(alice.id()));
360 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
361 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], secondDocument));
362 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
370 auto const sleDID = env.le(
keylet::did(alice.id()));
371 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
372 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
373 BEAST_EXPECT(
checkVL((*sleDID)[sfData], secondData));
380 auto const sleDID = env.le(
keylet::did(alice.id()));
381 BEAST_EXPECT(!sleDID);
388 using namespace test::jtx;
testcase_t testcase
Memberspace for declaring test cases.
int addRaw(Blob const &vector)
std::string getString() const
An immutable linear range of bytes.
Immutable cryptographic account descriptor.
A transaction testing environment.
Sets the optional Attestation on a DIDSet.
Sets the optional DIDDocument on a DIDSet.
Sets the optional URI on a DIDSet.
Set the expected result code for a JTx The test will fail if the code doesn't match.
Keylet did(AccountID const &account) noexcept
Json::Value del(jtx::Account const &account)
Json::Value set(jtx::Account const &account)
Json::Value setValid(jtx::Account const &account)
std::uint32_t ownerCount(Env const &env, Account const &account)
PrettyAmount drops(Integer i)
Returns an XRP PrettyAmount, which is trivially convertible to STAmount.
Json::Value pay(AccountID const &account, AccountID const &to, AnyAmount amount)
Create a payment.
XRP_t const XRP
Converts to XRP Issue or STAmount.
FeatureBitset supported_amendments()
static bool checkVL(std::shared_ptr< SLE const > const &sle, SField const &field, std::string const &expected)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
@ tecINSUFFICIENT_RESERVE
void run() override
Runs the suite.
void testEnabled(FeatureBitset features)
void testSetModify(FeatureBitset features)
void testDeleteInvalid(FeatureBitset features)
void testSetValidInitial(FeatureBitset features)
void testAccountReserve(FeatureBitset features)
void testSetInvalid(FeatureBitset features)