xrpld
Loading...
Searching...
No Matches
MPTokenIssuanceTests.cpp
1// Auto-generated unit tests for ledger entry MPTokenIssuance
2
3
4#include <gtest/gtest.h>
5
6#include <protocol_autogen/TestHelpers.h>
7
8#include <xrpl/protocol/STLedgerEntry.h>
9#include <xrpl/protocol_autogen/ledger_entries/MPTokenIssuance.h>
10#include <xrpl/protocol_autogen/ledger_entries/Ticket.h>
11
12#include <string>
13
14namespace xrpl::ledger_entries {
15
16// 1 & 4) Set fields via builder setters, build, then read them back via
17// wrapper getters. After build(), validate() should succeed for both the
18// builder's STObject and the wrapper's SLE.
19TEST(MPTokenIssuanceTests, BuilderSettersRoundTrip)
20{
21 uint256 const index{1u};
22
23 auto const issuerValue = canonical_ACCOUNT();
24 auto const sequenceValue = canonical_UINT32();
25 auto const transferFeeValue = canonical_UINT16();
26 auto const ownerNodeValue = canonical_UINT64();
27 auto const assetScaleValue = canonical_UINT8();
28 auto const maximumAmountValue = canonical_UINT64();
29 auto const outstandingAmountValue = canonical_UINT64();
30 auto const lockedAmountValue = canonical_UINT64();
31 auto const mPTokenMetadataValue = canonical_VL();
32 auto const previousTxnIDValue = canonical_UINT256();
33 auto const previousTxnLgrSeqValue = canonical_UINT32();
34 auto const domainIDValue = canonical_UINT256();
35 auto const mutableFlagsValue = canonical_UINT32();
36 auto const referenceHoldingValue = canonical_UINT256();
37 auto const issuerEncryptionKeyValue = canonical_VL();
38 auto const auditorEncryptionKeyValue = canonical_VL();
39 auto const confidentialOutstandingAmountValue = canonical_UINT64();
40
42 issuerValue,
43 sequenceValue,
44 ownerNodeValue,
45 outstandingAmountValue,
46 previousTxnIDValue,
47 previousTxnLgrSeqValue
48 };
49
50 builder.setTransferFee(transferFeeValue);
51 builder.setAssetScale(assetScaleValue);
52 builder.setMaximumAmount(maximumAmountValue);
53 builder.setLockedAmount(lockedAmountValue);
54 builder.setMPTokenMetadata(mPTokenMetadataValue);
55 builder.setDomainID(domainIDValue);
56 builder.setMutableFlags(mutableFlagsValue);
57 builder.setReferenceHolding(referenceHoldingValue);
58 builder.setIssuerEncryptionKey(issuerEncryptionKeyValue);
59 builder.setAuditorEncryptionKey(auditorEncryptionKeyValue);
60 builder.setConfidentialOutstandingAmount(confidentialOutstandingAmountValue);
61
62 builder.setLedgerIndex(index);
63 builder.setFlags(0x1u);
64
65 EXPECT_TRUE(builder.validate());
66
67 auto const entry = builder.build(index);
68
69 EXPECT_TRUE(entry.validate());
70
71 {
72 auto const& expected = issuerValue;
73 auto const actual = entry.getIssuer();
74 expectEqualField(expected, actual, "sfIssuer");
75 }
76
77 {
78 auto const& expected = sequenceValue;
79 auto const actual = entry.getSequence();
80 expectEqualField(expected, actual, "sfSequence");
81 }
82
83 {
84 auto const& expected = ownerNodeValue;
85 auto const actual = entry.getOwnerNode();
86 expectEqualField(expected, actual, "sfOwnerNode");
87 }
88
89 {
90 auto const& expected = outstandingAmountValue;
91 auto const actual = entry.getOutstandingAmount();
92 expectEqualField(expected, actual, "sfOutstandingAmount");
93 }
94
95 {
96 auto const& expected = previousTxnIDValue;
97 auto const actual = entry.getPreviousTxnID();
98 expectEqualField(expected, actual, "sfPreviousTxnID");
99 }
100
101 {
102 auto const& expected = previousTxnLgrSeqValue;
103 auto const actual = entry.getPreviousTxnLgrSeq();
104 expectEqualField(expected, actual, "sfPreviousTxnLgrSeq");
105 }
106
107 {
108 auto const& expected = transferFeeValue;
109 auto const actualOpt = entry.getTransferFee();
110 ASSERT_TRUE(actualOpt.has_value());
111 expectEqualField(expected, *actualOpt, "sfTransferFee");
112 EXPECT_TRUE(entry.hasTransferFee());
113 }
114
115 {
116 auto const& expected = assetScaleValue;
117 auto const actualOpt = entry.getAssetScale();
118 ASSERT_TRUE(actualOpt.has_value());
119 expectEqualField(expected, *actualOpt, "sfAssetScale");
120 EXPECT_TRUE(entry.hasAssetScale());
121 }
122
123 {
124 auto const& expected = maximumAmountValue;
125 auto const actualOpt = entry.getMaximumAmount();
126 ASSERT_TRUE(actualOpt.has_value());
127 expectEqualField(expected, *actualOpt, "sfMaximumAmount");
128 EXPECT_TRUE(entry.hasMaximumAmount());
129 }
130
131 {
132 auto const& expected = lockedAmountValue;
133 auto const actualOpt = entry.getLockedAmount();
134 ASSERT_TRUE(actualOpt.has_value());
135 expectEqualField(expected, *actualOpt, "sfLockedAmount");
136 EXPECT_TRUE(entry.hasLockedAmount());
137 }
138
139 {
140 auto const& expected = mPTokenMetadataValue;
141 auto const actualOpt = entry.getMPTokenMetadata();
142 ASSERT_TRUE(actualOpt.has_value());
143 expectEqualField(expected, *actualOpt, "sfMPTokenMetadata");
144 EXPECT_TRUE(entry.hasMPTokenMetadata());
145 }
146
147 {
148 auto const& expected = domainIDValue;
149 auto const actualOpt = entry.getDomainID();
150 ASSERT_TRUE(actualOpt.has_value());
151 expectEqualField(expected, *actualOpt, "sfDomainID");
152 EXPECT_TRUE(entry.hasDomainID());
153 }
154
155 {
156 auto const& expected = mutableFlagsValue;
157 auto const actualOpt = entry.getMutableFlags();
158 ASSERT_TRUE(actualOpt.has_value());
159 expectEqualField(expected, *actualOpt, "sfMutableFlags");
160 EXPECT_TRUE(entry.hasMutableFlags());
161 }
162
163 {
164 auto const& expected = referenceHoldingValue;
165 auto const actualOpt = entry.getReferenceHolding();
166 ASSERT_TRUE(actualOpt.has_value());
167 expectEqualField(expected, *actualOpt, "sfReferenceHolding");
168 EXPECT_TRUE(entry.hasReferenceHolding());
169 }
170
171 {
172 auto const& expected = issuerEncryptionKeyValue;
173 auto const actualOpt = entry.getIssuerEncryptionKey();
174 ASSERT_TRUE(actualOpt.has_value());
175 expectEqualField(expected, *actualOpt, "sfIssuerEncryptionKey");
176 EXPECT_TRUE(entry.hasIssuerEncryptionKey());
177 }
178
179 {
180 auto const& expected = auditorEncryptionKeyValue;
181 auto const actualOpt = entry.getAuditorEncryptionKey();
182 ASSERT_TRUE(actualOpt.has_value());
183 expectEqualField(expected, *actualOpt, "sfAuditorEncryptionKey");
184 EXPECT_TRUE(entry.hasAuditorEncryptionKey());
185 }
186
187 {
188 auto const& expected = confidentialOutstandingAmountValue;
189 auto const actualOpt = entry.getConfidentialOutstandingAmount();
190 ASSERT_TRUE(actualOpt.has_value());
191 expectEqualField(expected, *actualOpt, "sfConfidentialOutstandingAmount");
192 EXPECT_TRUE(entry.hasConfidentialOutstandingAmount());
193 }
194
195 EXPECT_TRUE(entry.hasLedgerIndex());
196 auto const ledgerIndex = entry.getLedgerIndex();
197 ASSERT_TRUE(ledgerIndex.has_value());
198 EXPECT_EQ(*ledgerIndex, index);
199 EXPECT_EQ(entry.getKey(), index);
200}
201
202// 2 & 4) Start from an SLE, set fields directly on it, construct a builder
203// from that SLE, build a new wrapper, and verify all fields (and validate()).
204TEST(MPTokenIssuanceTests, BuilderFromSleRoundTrip)
205{
206 uint256 const index{2u};
207
208 auto const issuerValue = canonical_ACCOUNT();
209 auto const sequenceValue = canonical_UINT32();
210 auto const transferFeeValue = canonical_UINT16();
211 auto const ownerNodeValue = canonical_UINT64();
212 auto const assetScaleValue = canonical_UINT8();
213 auto const maximumAmountValue = canonical_UINT64();
214 auto const outstandingAmountValue = canonical_UINT64();
215 auto const lockedAmountValue = canonical_UINT64();
216 auto const mPTokenMetadataValue = canonical_VL();
217 auto const previousTxnIDValue = canonical_UINT256();
218 auto const previousTxnLgrSeqValue = canonical_UINT32();
219 auto const domainIDValue = canonical_UINT256();
220 auto const mutableFlagsValue = canonical_UINT32();
221 auto const referenceHoldingValue = canonical_UINT256();
222 auto const issuerEncryptionKeyValue = canonical_VL();
223 auto const auditorEncryptionKeyValue = canonical_VL();
224 auto const confidentialOutstandingAmountValue = canonical_UINT64();
225
227
228 sle->at(sfIssuer) = issuerValue;
229 sle->at(sfSequence) = sequenceValue;
230 sle->at(sfTransferFee) = transferFeeValue;
231 sle->at(sfOwnerNode) = ownerNodeValue;
232 sle->at(sfAssetScale) = assetScaleValue;
233 sle->at(sfMaximumAmount) = maximumAmountValue;
234 sle->at(sfOutstandingAmount) = outstandingAmountValue;
235 sle->at(sfLockedAmount) = lockedAmountValue;
236 sle->at(sfMPTokenMetadata) = mPTokenMetadataValue;
237 sle->at(sfPreviousTxnID) = previousTxnIDValue;
238 sle->at(sfPreviousTxnLgrSeq) = previousTxnLgrSeqValue;
239 sle->at(sfDomainID) = domainIDValue;
240 sle->at(sfMutableFlags) = mutableFlagsValue;
241 sle->at(sfReferenceHolding) = referenceHoldingValue;
242 sle->at(sfIssuerEncryptionKey) = issuerEncryptionKeyValue;
243 sle->at(sfAuditorEncryptionKey) = auditorEncryptionKeyValue;
244 sle->at(sfConfidentialOutstandingAmount) = confidentialOutstandingAmountValue;
245
246 MPTokenIssuanceBuilder builderFromSle{sle};
247 EXPECT_TRUE(builderFromSle.validate());
248
249 auto const entryFromBuilder = builderFromSle.build(index);
250
251 MPTokenIssuance entryFromSle{sle};
252 EXPECT_TRUE(entryFromBuilder.validate());
253 EXPECT_TRUE(entryFromSle.validate());
254
255 {
256 auto const& expected = issuerValue;
257
258 auto const fromSle = entryFromSle.getIssuer();
259 auto const fromBuilder = entryFromBuilder.getIssuer();
260
261 expectEqualField(expected, fromSle, "sfIssuer");
262 expectEqualField(expected, fromBuilder, "sfIssuer");
263 }
264
265 {
266 auto const& expected = sequenceValue;
267
268 auto const fromSle = entryFromSle.getSequence();
269 auto const fromBuilder = entryFromBuilder.getSequence();
270
271 expectEqualField(expected, fromSle, "sfSequence");
272 expectEqualField(expected, fromBuilder, "sfSequence");
273 }
274
275 {
276 auto const& expected = ownerNodeValue;
277
278 auto const fromSle = entryFromSle.getOwnerNode();
279 auto const fromBuilder = entryFromBuilder.getOwnerNode();
280
281 expectEqualField(expected, fromSle, "sfOwnerNode");
282 expectEqualField(expected, fromBuilder, "sfOwnerNode");
283 }
284
285 {
286 auto const& expected = outstandingAmountValue;
287
288 auto const fromSle = entryFromSle.getOutstandingAmount();
289 auto const fromBuilder = entryFromBuilder.getOutstandingAmount();
290
291 expectEqualField(expected, fromSle, "sfOutstandingAmount");
292 expectEqualField(expected, fromBuilder, "sfOutstandingAmount");
293 }
294
295 {
296 auto const& expected = previousTxnIDValue;
297
298 auto const fromSle = entryFromSle.getPreviousTxnID();
299 auto const fromBuilder = entryFromBuilder.getPreviousTxnID();
300
301 expectEqualField(expected, fromSle, "sfPreviousTxnID");
302 expectEqualField(expected, fromBuilder, "sfPreviousTxnID");
303 }
304
305 {
306 auto const& expected = previousTxnLgrSeqValue;
307
308 auto const fromSle = entryFromSle.getPreviousTxnLgrSeq();
309 auto const fromBuilder = entryFromBuilder.getPreviousTxnLgrSeq();
310
311 expectEqualField(expected, fromSle, "sfPreviousTxnLgrSeq");
312 expectEqualField(expected, fromBuilder, "sfPreviousTxnLgrSeq");
313 }
314
315 {
316 auto const& expected = transferFeeValue;
317
318 auto const fromSleOpt = entryFromSle.getTransferFee();
319 auto const fromBuilderOpt = entryFromBuilder.getTransferFee();
320
321 ASSERT_TRUE(fromSleOpt.has_value());
322 ASSERT_TRUE(fromBuilderOpt.has_value());
323
324 expectEqualField(expected, *fromSleOpt, "sfTransferFee");
325 expectEqualField(expected, *fromBuilderOpt, "sfTransferFee");
326 }
327
328 {
329 auto const& expected = assetScaleValue;
330
331 auto const fromSleOpt = entryFromSle.getAssetScale();
332 auto const fromBuilderOpt = entryFromBuilder.getAssetScale();
333
334 ASSERT_TRUE(fromSleOpt.has_value());
335 ASSERT_TRUE(fromBuilderOpt.has_value());
336
337 expectEqualField(expected, *fromSleOpt, "sfAssetScale");
338 expectEqualField(expected, *fromBuilderOpt, "sfAssetScale");
339 }
340
341 {
342 auto const& expected = maximumAmountValue;
343
344 auto const fromSleOpt = entryFromSle.getMaximumAmount();
345 auto const fromBuilderOpt = entryFromBuilder.getMaximumAmount();
346
347 ASSERT_TRUE(fromSleOpt.has_value());
348 ASSERT_TRUE(fromBuilderOpt.has_value());
349
350 expectEqualField(expected, *fromSleOpt, "sfMaximumAmount");
351 expectEqualField(expected, *fromBuilderOpt, "sfMaximumAmount");
352 }
353
354 {
355 auto const& expected = lockedAmountValue;
356
357 auto const fromSleOpt = entryFromSle.getLockedAmount();
358 auto const fromBuilderOpt = entryFromBuilder.getLockedAmount();
359
360 ASSERT_TRUE(fromSleOpt.has_value());
361 ASSERT_TRUE(fromBuilderOpt.has_value());
362
363 expectEqualField(expected, *fromSleOpt, "sfLockedAmount");
364 expectEqualField(expected, *fromBuilderOpt, "sfLockedAmount");
365 }
366
367 {
368 auto const& expected = mPTokenMetadataValue;
369
370 auto const fromSleOpt = entryFromSle.getMPTokenMetadata();
371 auto const fromBuilderOpt = entryFromBuilder.getMPTokenMetadata();
372
373 ASSERT_TRUE(fromSleOpt.has_value());
374 ASSERT_TRUE(fromBuilderOpt.has_value());
375
376 expectEqualField(expected, *fromSleOpt, "sfMPTokenMetadata");
377 expectEqualField(expected, *fromBuilderOpt, "sfMPTokenMetadata");
378 }
379
380 {
381 auto const& expected = domainIDValue;
382
383 auto const fromSleOpt = entryFromSle.getDomainID();
384 auto const fromBuilderOpt = entryFromBuilder.getDomainID();
385
386 ASSERT_TRUE(fromSleOpt.has_value());
387 ASSERT_TRUE(fromBuilderOpt.has_value());
388
389 expectEqualField(expected, *fromSleOpt, "sfDomainID");
390 expectEqualField(expected, *fromBuilderOpt, "sfDomainID");
391 }
392
393 {
394 auto const& expected = mutableFlagsValue;
395
396 auto const fromSleOpt = entryFromSle.getMutableFlags();
397 auto const fromBuilderOpt = entryFromBuilder.getMutableFlags();
398
399 ASSERT_TRUE(fromSleOpt.has_value());
400 ASSERT_TRUE(fromBuilderOpt.has_value());
401
402 expectEqualField(expected, *fromSleOpt, "sfMutableFlags");
403 expectEqualField(expected, *fromBuilderOpt, "sfMutableFlags");
404 }
405
406 {
407 auto const& expected = referenceHoldingValue;
408
409 auto const fromSleOpt = entryFromSle.getReferenceHolding();
410 auto const fromBuilderOpt = entryFromBuilder.getReferenceHolding();
411
412 ASSERT_TRUE(fromSleOpt.has_value());
413 ASSERT_TRUE(fromBuilderOpt.has_value());
414
415 expectEqualField(expected, *fromSleOpt, "sfReferenceHolding");
416 expectEqualField(expected, *fromBuilderOpt, "sfReferenceHolding");
417 }
418
419 {
420 auto const& expected = issuerEncryptionKeyValue;
421
422 auto const fromSleOpt = entryFromSle.getIssuerEncryptionKey();
423 auto const fromBuilderOpt = entryFromBuilder.getIssuerEncryptionKey();
424
425 ASSERT_TRUE(fromSleOpt.has_value());
426 ASSERT_TRUE(fromBuilderOpt.has_value());
427
428 expectEqualField(expected, *fromSleOpt, "sfIssuerEncryptionKey");
429 expectEqualField(expected, *fromBuilderOpt, "sfIssuerEncryptionKey");
430 }
431
432 {
433 auto const& expected = auditorEncryptionKeyValue;
434
435 auto const fromSleOpt = entryFromSle.getAuditorEncryptionKey();
436 auto const fromBuilderOpt = entryFromBuilder.getAuditorEncryptionKey();
437
438 ASSERT_TRUE(fromSleOpt.has_value());
439 ASSERT_TRUE(fromBuilderOpt.has_value());
440
441 expectEqualField(expected, *fromSleOpt, "sfAuditorEncryptionKey");
442 expectEqualField(expected, *fromBuilderOpt, "sfAuditorEncryptionKey");
443 }
444
445 {
446 auto const& expected = confidentialOutstandingAmountValue;
447
448 auto const fromSleOpt = entryFromSle.getConfidentialOutstandingAmount();
449 auto const fromBuilderOpt = entryFromBuilder.getConfidentialOutstandingAmount();
450
451 ASSERT_TRUE(fromSleOpt.has_value());
452 ASSERT_TRUE(fromBuilderOpt.has_value());
453
454 expectEqualField(expected, *fromSleOpt, "sfConfidentialOutstandingAmount");
455 expectEqualField(expected, *fromBuilderOpt, "sfConfidentialOutstandingAmount");
456 }
457
458 EXPECT_EQ(entryFromSle.getKey(), index);
459 EXPECT_EQ(entryFromBuilder.getKey(), index);
460}
461
462// 3) Verify wrapper throws when constructed from wrong ledger entry type.
463TEST(MPTokenIssuanceTests, WrapperThrowsOnWrongEntryType)
464{
465 uint256 const index{3u};
466
467 // Build a valid ledger entry of a different type
468 // Ticket requires: Account, OwnerNode, TicketSequence, PreviousTxnID, PreviousTxnLgrSeq
469 // Check requires: Account, Destination, SendMax, Sequence, OwnerNode, DestinationNode, PreviousTxnID, PreviousTxnLgrSeq
470 TicketBuilder wrongBuilder{
476 auto wrongEntry = wrongBuilder.build(index);
477
478 EXPECT_THROW(MPTokenIssuance{wrongEntry.getSle()}, std::runtime_error);
479}
480
481// 4) Verify builder throws when constructed from wrong ledger entry type.
482TEST(MPTokenIssuanceTests, BuilderThrowsOnWrongEntryType)
483{
484 uint256 const index{4u};
485
486 // Build a valid ledger entry of a different type
487 TicketBuilder wrongBuilder{
493 auto wrongEntry = wrongBuilder.build(index);
494
495 EXPECT_THROW(MPTokenIssuanceBuilder{wrongEntry.getSle()}, std::runtime_error);
496}
497
498// 5) Build with only required fields and verify optional fields return nullopt.
499TEST(MPTokenIssuanceTests, OptionalFieldsReturnNullopt)
500{
501 uint256 const index{3u};
502
503 auto const issuerValue = canonical_ACCOUNT();
504 auto const sequenceValue = canonical_UINT32();
505 auto const ownerNodeValue = canonical_UINT64();
506 auto const outstandingAmountValue = canonical_UINT64();
507 auto const previousTxnIDValue = canonical_UINT256();
508 auto const previousTxnLgrSeqValue = canonical_UINT32();
509
511 issuerValue,
512 sequenceValue,
513 ownerNodeValue,
514 outstandingAmountValue,
515 previousTxnIDValue,
516 previousTxnLgrSeqValue
517 };
518
519 auto const entry = builder.build(index);
520
521 // Verify optional fields are not present
522 EXPECT_FALSE(entry.hasTransferFee());
523 EXPECT_FALSE(entry.getTransferFee().has_value());
524 EXPECT_FALSE(entry.hasAssetScale());
525 EXPECT_FALSE(entry.getAssetScale().has_value());
526 EXPECT_FALSE(entry.hasMaximumAmount());
527 EXPECT_FALSE(entry.getMaximumAmount().has_value());
528 EXPECT_FALSE(entry.hasLockedAmount());
529 EXPECT_FALSE(entry.getLockedAmount().has_value());
530 EXPECT_FALSE(entry.hasMPTokenMetadata());
531 EXPECT_FALSE(entry.getMPTokenMetadata().has_value());
532 EXPECT_FALSE(entry.hasDomainID());
533 EXPECT_FALSE(entry.getDomainID().has_value());
534 EXPECT_FALSE(entry.hasMutableFlags());
535 EXPECT_FALSE(entry.getMutableFlags().has_value());
536 EXPECT_FALSE(entry.hasReferenceHolding());
537 EXPECT_FALSE(entry.getReferenceHolding().has_value());
538 EXPECT_FALSE(entry.hasIssuerEncryptionKey());
539 EXPECT_FALSE(entry.getIssuerEncryptionKey().has_value());
540 EXPECT_FALSE(entry.hasAuditorEncryptionKey());
541 EXPECT_FALSE(entry.getAuditorEncryptionKey().has_value());
542 EXPECT_FALSE(entry.hasConfidentialOutstandingAmount());
543 EXPECT_FALSE(entry.getConfidentialOutstandingAmount().has_value());
544}
545}
bool validate() const
Validate the ledger entry.
uint256 const & getKey() const
Get the key (index) of this ledger entry.
Derived & setLedgerIndex(uint256 const &value)
Set the ledger index.
Derived & setFlags(uint32_t value)
Set the flags.
bool validate() const
Validate the ledger entry.
Builder for MPTokenIssuance ledger entries.
MPTokenIssuanceBuilder & setIssuerEncryptionKey(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfIssuerEncryptionKey (SoeOptional).
MPTokenIssuanceBuilder & setAuditorEncryptionKey(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfAuditorEncryptionKey (SoeOptional).
MPTokenIssuanceBuilder & setLockedAmount(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfLockedAmount (SoeOptional).
MPTokenIssuanceBuilder & setMaximumAmount(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfMaximumAmount (SoeOptional).
MPTokenIssuanceBuilder & setDomainID(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfDomainID (SoeOptional).
MPTokenIssuanceBuilder & setTransferFee(std::decay_t< typename SF_UINT16::type::value_type > const &value)
Set sfTransferFee (SoeDefault).
MPTokenIssuanceBuilder & setConfidentialOutstandingAmount(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfConfidentialOutstandingAmount (SoeDefault).
MPTokenIssuanceBuilder & setMPTokenMetadata(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfMPTokenMetadata (SoeOptional).
MPTokenIssuanceBuilder & setAssetScale(std::decay_t< typename SF_UINT8::type::value_type > const &value)
Set sfAssetScale (SoeDefault).
MPTokenIssuanceBuilder & setReferenceHolding(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfReferenceHolding (SoeOptional).
MPTokenIssuanceBuilder & setMutableFlags(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfMutableFlags (SoeDefault).
MPTokenIssuance build(uint256 const &index)
Build and return the completed MPTokenIssuance wrapper.
Ledger Entry: MPTokenIssuance.
protocol_autogen::Optional< SF_UINT64::type::value_type > getMaximumAmount() const
Get sfMaximumAmount (SoeOptional).
SF_UINT64::type::value_type getOutstandingAmount() const
Get sfOutstandingAmount (SoeRequired).
protocol_autogen::Optional< SF_UINT8::type::value_type > getAssetScale() const
Get sfAssetScale (SoeDefault).
protocol_autogen::Optional< SF_UINT64::type::value_type > getLockedAmount() const
Get sfLockedAmount (SoeOptional).
protocol_autogen::Optional< SF_UINT256::type::value_type > getDomainID() const
Get sfDomainID (SoeOptional).
SF_ACCOUNT::type::value_type getIssuer() const
Get sfIssuer (SoeRequired).
protocol_autogen::Optional< SF_VL::type::value_type > getAuditorEncryptionKey() const
Get sfAuditorEncryptionKey (SoeOptional).
SF_UINT32::type::value_type getSequence() const
Get sfSequence (SoeRequired).
protocol_autogen::Optional< SF_UINT256::type::value_type > getReferenceHolding() const
Get sfReferenceHolding (SoeOptional).
SF_UINT256::type::value_type getPreviousTxnID() const
Get sfPreviousTxnID (SoeRequired).
SF_UINT64::type::value_type getOwnerNode() const
Get sfOwnerNode (SoeRequired).
protocol_autogen::Optional< SF_VL::type::value_type > getIssuerEncryptionKey() const
Get sfIssuerEncryptionKey (SoeOptional).
protocol_autogen::Optional< SF_UINT64::type::value_type > getConfidentialOutstandingAmount() const
Get sfConfidentialOutstandingAmount (SoeDefault).
protocol_autogen::Optional< SF_VL::type::value_type > getMPTokenMetadata() const
Get sfMPTokenMetadata (SoeOptional).
protocol_autogen::Optional< SF_UINT32::type::value_type > getMutableFlags() const
Get sfMutableFlags (SoeDefault).
protocol_autogen::Optional< SF_UINT16::type::value_type > getTransferFee() const
Get sfTransferFee (SoeDefault).
SF_UINT32::type::value_type getPreviousTxnLgrSeq() const
Get sfPreviousTxnLgrSeq (SoeRequired).
static constexpr LedgerEntryType entryType
Builder for Ticket ledger entries.
Definition Ticket.h:112
Ticket build(uint256 const &index)
Build and return the completed Ticket wrapper.
Definition Ticket.h:209
T make_shared(T... args)
TEST(AccountRootTests, BuilderSettersRoundTrip)
BaseUInt< 256 > uint256
Definition base_uint.h:562
void expectEqualField(T const &expected, T const &actual, char const *fieldName)