22#include <xrpl/protocol/Feature.h>
23#include <xrpl/protocol/Indexes.h>
48 Env env{*
this, features - featureDID};
50 env.fund(
XRP(5000), alice);
68 using namespace test::jtx;
70 Env env{*
this, features};
75 auto const acctReserve = env.current()->fees().accountReserve(0);
76 auto const incReserve = env.current()->fees().increment;
77 env.fund(acctReserve, alice);
79 BEAST_EXPECT(env.balance(alice) == acctReserve);
88 env(
pay(env.master, alice, incReserve +
drops(19)));
89 BEAST_EXPECT(env.balance(alice) == acctReserve + incReserve +
drops(9));
98 env(
pay(env.master, alice,
drops(11)));
120 Env env{*
this, features};
122 env.fund(
XRP(5000), alice);
169 auto const fixEnabled = env.current()->rules().enabled(fixEmptyDID);
174 auto const expectedOwnerReserve = fixEnabled ? 0 : 1;
175 BEAST_EXPECT(
ownerCount(env, alice) == expectedOwnerReserve);
188 Env env{*
this, features};
190 env.fund(
XRP(5000), alice);
219 Env env{*
this, features};
222 Account const charlie{
"charlie"};
225 Account const francis{
"francis"};
226 Account const george{
"george"};
227 env.fund(
XRP(5000), alice, bob, charlie, dave, edna, francis);
273 Env env{*
this, features};
275 env.fund(
XRP(5000), alice);
278 auto const ar = env.le(alice);
285 auto const sleDID = env.le(
keylet::did(alice.id()));
286 BEAST_EXPECT(sleDID);
287 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
288 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
289 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
296 auto const sleDID = env.le(
keylet::did(alice.id()));
297 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
298 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
299 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
307 auto const sleDID = env.le(
keylet::did(alice.id()));
308 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
309 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
310 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
318 auto const sleDID = env.le(
keylet::did(alice.id()));
319 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
320 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
321 BEAST_EXPECT(
checkVL((*sleDID)[sfData], initialData));
328 auto const sleDID = env.le(
keylet::did(alice.id()));
329 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
330 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
331 BEAST_EXPECT(
checkVL((*sleDID)[sfData], initialData));
338 auto const sleDID = env.le(
keylet::did(alice.id()));
339 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
340 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
341 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
349 auto const sleDID = env.le(
keylet::did(alice.id()));
350 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], secondURI));
351 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
352 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
360 auto const sleDID = env.le(
keylet::did(alice.id()));
361 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
362 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], secondDocument));
363 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
371 auto const sleDID = env.le(
keylet::did(alice.id()));
372 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
373 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
374 BEAST_EXPECT(
checkVL((*sleDID)[sfData], secondData));
381 auto const sleDID = env.le(
keylet::did(alice.id()));
382 BEAST_EXPECT(!sleDID);
389 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)