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 auto const baseFee = env.current()->fees().base;
78 env.fund(acctReserve, alice);
80 BEAST_EXPECT(env.balance(alice) == acctReserve);
89 env(
pay(env.master, alice,
drops(incReserve + 2 * baseFee - 1)));
92 acctReserve + incReserve +
drops(baseFee - 1));
101 env(
pay(env.master, alice,
drops(baseFee + 1)));
123 Env env{*
this, features};
125 env.fund(
XRP(5000), alice);
172 auto const fixEnabled = env.current()->rules().enabled(fixEmptyDID);
177 auto const expectedOwnerReserve = fixEnabled ? 0 : 1;
178 BEAST_EXPECT(
ownerCount(env, alice) == expectedOwnerReserve);
191 Env env{*
this, features};
193 env.fund(
XRP(5000), alice);
222 Env env{*
this, features};
225 Account const charlie{
"charlie"};
228 Account const francis{
"francis"};
229 Account const george{
"george"};
230 env.fund(
XRP(5000), alice, bob, charlie, dave, edna, francis);
276 Env env{*
this, features};
278 env.fund(
XRP(5000), alice);
281 auto const ar = env.le(alice);
288 auto const sleDID = env.le(
keylet::did(alice.id()));
289 BEAST_EXPECT(sleDID);
290 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
291 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
292 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
299 auto const sleDID = env.le(
keylet::did(alice.id()));
300 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
301 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
302 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
310 auto const sleDID = env.le(
keylet::did(alice.id()));
311 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
312 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
313 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
321 auto const sleDID = env.le(
keylet::did(alice.id()));
322 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], initialURI));
323 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
324 BEAST_EXPECT(
checkVL((*sleDID)[sfData], initialData));
331 auto const sleDID = env.le(
keylet::did(alice.id()));
332 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
333 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
334 BEAST_EXPECT(
checkVL((*sleDID)[sfData], initialData));
341 auto const sleDID = env.le(
keylet::did(alice.id()));
342 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
343 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], initialDocument));
344 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
352 auto const sleDID = env.le(
keylet::did(alice.id()));
353 BEAST_EXPECT(
checkVL((*sleDID)[sfURI], secondURI));
354 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
355 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
363 auto const sleDID = env.le(
keylet::did(alice.id()));
364 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
365 BEAST_EXPECT(
checkVL((*sleDID)[sfDIDDocument], secondDocument));
366 BEAST_EXPECT(!sleDID->isFieldPresent(sfData));
374 auto const sleDID = env.le(
keylet::did(alice.id()));
375 BEAST_EXPECT(!sleDID->isFieldPresent(sfURI));
376 BEAST_EXPECT(!sleDID->isFieldPresent(sfDIDDocument));
377 BEAST_EXPECT(
checkVL((*sleDID)[sfData], secondData));
384 auto const sleDID = env.le(
keylet::did(alice.id()));
385 BEAST_EXPECT(!sleDID);
392 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)