xrpld
Loading...
Searching...
No Matches
DirectoryNodeTests.cpp
1// Auto-generated unit tests for ledger entry DirectoryNode
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/DirectoryNode.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(DirectoryNodeTests, BuilderSettersRoundTrip)
20{
21 uint256 const index{1u};
22
23 auto const ownerValue = canonical_ACCOUNT();
24 auto const takerPaysCurrencyValue = canonical_UINT160();
25 auto const takerPaysIssuerValue = canonical_UINT160();
26 auto const takerPaysMPTValue = canonical_UINT192();
27 auto const takerGetsCurrencyValue = canonical_UINT160();
28 auto const takerGetsIssuerValue = canonical_UINT160();
29 auto const takerGetsMPTValue = canonical_UINT192();
30 auto const exchangeRateValue = canonical_UINT64();
31 auto const indexesValue = canonical_VECTOR256();
32 auto const rootIndexValue = canonical_UINT256();
33 auto const indexNextValue = canonical_UINT64();
34 auto const indexPreviousValue = canonical_UINT64();
35 auto const nFTokenIDValue = canonical_UINT256();
36 auto const previousTxnIDValue = canonical_UINT256();
37 auto const previousTxnLgrSeqValue = canonical_UINT32();
38 auto const domainIDValue = canonical_UINT256();
39
41 indexesValue,
42 rootIndexValue
43 };
44
45 builder.setOwner(ownerValue);
46 builder.setTakerPaysCurrency(takerPaysCurrencyValue);
47 builder.setTakerPaysIssuer(takerPaysIssuerValue);
48 builder.setTakerPaysMPT(takerPaysMPTValue);
49 builder.setTakerGetsCurrency(takerGetsCurrencyValue);
50 builder.setTakerGetsIssuer(takerGetsIssuerValue);
51 builder.setTakerGetsMPT(takerGetsMPTValue);
52 builder.setExchangeRate(exchangeRateValue);
53 builder.setIndexNext(indexNextValue);
54 builder.setIndexPrevious(indexPreviousValue);
55 builder.setNFTokenID(nFTokenIDValue);
56 builder.setPreviousTxnID(previousTxnIDValue);
57 builder.setPreviousTxnLgrSeq(previousTxnLgrSeqValue);
58 builder.setDomainID(domainIDValue);
59
60 builder.setLedgerIndex(index);
61 builder.setFlags(0x1u);
62
63 EXPECT_TRUE(builder.validate());
64
65 auto const entry = builder.build(index);
66
67 EXPECT_TRUE(entry.validate());
68
69 {
70 auto const& expected = indexesValue;
71 auto const actual = entry.getIndexes();
72 expectEqualField(expected, actual, "sfIndexes");
73 }
74
75 {
76 auto const& expected = rootIndexValue;
77 auto const actual = entry.getRootIndex();
78 expectEqualField(expected, actual, "sfRootIndex");
79 }
80
81 {
82 auto const& expected = ownerValue;
83 auto const actualOpt = entry.getOwner();
84 ASSERT_TRUE(actualOpt.has_value());
85 expectEqualField(expected, *actualOpt, "sfOwner");
86 EXPECT_TRUE(entry.hasOwner());
87 }
88
89 {
90 auto const& expected = takerPaysCurrencyValue;
91 auto const actualOpt = entry.getTakerPaysCurrency();
92 ASSERT_TRUE(actualOpt.has_value());
93 expectEqualField(expected, *actualOpt, "sfTakerPaysCurrency");
94 EXPECT_TRUE(entry.hasTakerPaysCurrency());
95 }
96
97 {
98 auto const& expected = takerPaysIssuerValue;
99 auto const actualOpt = entry.getTakerPaysIssuer();
100 ASSERT_TRUE(actualOpt.has_value());
101 expectEqualField(expected, *actualOpt, "sfTakerPaysIssuer");
102 EXPECT_TRUE(entry.hasTakerPaysIssuer());
103 }
104
105 {
106 auto const& expected = takerPaysMPTValue;
107 auto const actualOpt = entry.getTakerPaysMPT();
108 ASSERT_TRUE(actualOpt.has_value());
109 expectEqualField(expected, *actualOpt, "sfTakerPaysMPT");
110 EXPECT_TRUE(entry.hasTakerPaysMPT());
111 }
112
113 {
114 auto const& expected = takerGetsCurrencyValue;
115 auto const actualOpt = entry.getTakerGetsCurrency();
116 ASSERT_TRUE(actualOpt.has_value());
117 expectEqualField(expected, *actualOpt, "sfTakerGetsCurrency");
118 EXPECT_TRUE(entry.hasTakerGetsCurrency());
119 }
120
121 {
122 auto const& expected = takerGetsIssuerValue;
123 auto const actualOpt = entry.getTakerGetsIssuer();
124 ASSERT_TRUE(actualOpt.has_value());
125 expectEqualField(expected, *actualOpt, "sfTakerGetsIssuer");
126 EXPECT_TRUE(entry.hasTakerGetsIssuer());
127 }
128
129 {
130 auto const& expected = takerGetsMPTValue;
131 auto const actualOpt = entry.getTakerGetsMPT();
132 ASSERT_TRUE(actualOpt.has_value());
133 expectEqualField(expected, *actualOpt, "sfTakerGetsMPT");
134 EXPECT_TRUE(entry.hasTakerGetsMPT());
135 }
136
137 {
138 auto const& expected = exchangeRateValue;
139 auto const actualOpt = entry.getExchangeRate();
140 ASSERT_TRUE(actualOpt.has_value());
141 expectEqualField(expected, *actualOpt, "sfExchangeRate");
142 EXPECT_TRUE(entry.hasExchangeRate());
143 }
144
145 {
146 auto const& expected = indexNextValue;
147 auto const actualOpt = entry.getIndexNext();
148 ASSERT_TRUE(actualOpt.has_value());
149 expectEqualField(expected, *actualOpt, "sfIndexNext");
150 EXPECT_TRUE(entry.hasIndexNext());
151 }
152
153 {
154 auto const& expected = indexPreviousValue;
155 auto const actualOpt = entry.getIndexPrevious();
156 ASSERT_TRUE(actualOpt.has_value());
157 expectEqualField(expected, *actualOpt, "sfIndexPrevious");
158 EXPECT_TRUE(entry.hasIndexPrevious());
159 }
160
161 {
162 auto const& expected = nFTokenIDValue;
163 auto const actualOpt = entry.getNFTokenID();
164 ASSERT_TRUE(actualOpt.has_value());
165 expectEqualField(expected, *actualOpt, "sfNFTokenID");
166 EXPECT_TRUE(entry.hasNFTokenID());
167 }
168
169 {
170 auto const& expected = previousTxnIDValue;
171 auto const actualOpt = entry.getPreviousTxnID();
172 ASSERT_TRUE(actualOpt.has_value());
173 expectEqualField(expected, *actualOpt, "sfPreviousTxnID");
174 EXPECT_TRUE(entry.hasPreviousTxnID());
175 }
176
177 {
178 auto const& expected = previousTxnLgrSeqValue;
179 auto const actualOpt = entry.getPreviousTxnLgrSeq();
180 ASSERT_TRUE(actualOpt.has_value());
181 expectEqualField(expected, *actualOpt, "sfPreviousTxnLgrSeq");
182 EXPECT_TRUE(entry.hasPreviousTxnLgrSeq());
183 }
184
185 {
186 auto const& expected = domainIDValue;
187 auto const actualOpt = entry.getDomainID();
188 ASSERT_TRUE(actualOpt.has_value());
189 expectEqualField(expected, *actualOpt, "sfDomainID");
190 EXPECT_TRUE(entry.hasDomainID());
191 }
192
193 EXPECT_TRUE(entry.hasLedgerIndex());
194 auto const ledgerIndex = entry.getLedgerIndex();
195 ASSERT_TRUE(ledgerIndex.has_value());
196 EXPECT_EQ(*ledgerIndex, index);
197 EXPECT_EQ(entry.getKey(), index);
198}
199
200// 2 & 4) Start from an SLE, set fields directly on it, construct a builder
201// from that SLE, build a new wrapper, and verify all fields (and validate()).
202TEST(DirectoryNodeTests, BuilderFromSleRoundTrip)
203{
204 uint256 const index{2u};
205
206 auto const ownerValue = canonical_ACCOUNT();
207 auto const takerPaysCurrencyValue = canonical_UINT160();
208 auto const takerPaysIssuerValue = canonical_UINT160();
209 auto const takerPaysMPTValue = canonical_UINT192();
210 auto const takerGetsCurrencyValue = canonical_UINT160();
211 auto const takerGetsIssuerValue = canonical_UINT160();
212 auto const takerGetsMPTValue = canonical_UINT192();
213 auto const exchangeRateValue = canonical_UINT64();
214 auto const indexesValue = canonical_VECTOR256();
215 auto const rootIndexValue = canonical_UINT256();
216 auto const indexNextValue = canonical_UINT64();
217 auto const indexPreviousValue = canonical_UINT64();
218 auto const nFTokenIDValue = canonical_UINT256();
219 auto const previousTxnIDValue = canonical_UINT256();
220 auto const previousTxnLgrSeqValue = canonical_UINT32();
221 auto const domainIDValue = canonical_UINT256();
222
224
225 sle->at(sfOwner) = ownerValue;
226 sle->at(sfTakerPaysCurrency) = takerPaysCurrencyValue;
227 sle->at(sfTakerPaysIssuer) = takerPaysIssuerValue;
228 sle->at(sfTakerPaysMPT) = takerPaysMPTValue;
229 sle->at(sfTakerGetsCurrency) = takerGetsCurrencyValue;
230 sle->at(sfTakerGetsIssuer) = takerGetsIssuerValue;
231 sle->at(sfTakerGetsMPT) = takerGetsMPTValue;
232 sle->at(sfExchangeRate) = exchangeRateValue;
233 sle->at(sfIndexes) = indexesValue;
234 sle->at(sfRootIndex) = rootIndexValue;
235 sle->at(sfIndexNext) = indexNextValue;
236 sle->at(sfIndexPrevious) = indexPreviousValue;
237 sle->at(sfNFTokenID) = nFTokenIDValue;
238 sle->at(sfPreviousTxnID) = previousTxnIDValue;
239 sle->at(sfPreviousTxnLgrSeq) = previousTxnLgrSeqValue;
240 sle->at(sfDomainID) = domainIDValue;
241
242 DirectoryNodeBuilder builderFromSle{sle};
243 EXPECT_TRUE(builderFromSle.validate());
244
245 auto const entryFromBuilder = builderFromSle.build(index);
246
247 DirectoryNode entryFromSle{sle};
248 EXPECT_TRUE(entryFromBuilder.validate());
249 EXPECT_TRUE(entryFromSle.validate());
250
251 {
252 auto const& expected = indexesValue;
253
254 auto const fromSle = entryFromSle.getIndexes();
255 auto const fromBuilder = entryFromBuilder.getIndexes();
256
257 expectEqualField(expected, fromSle, "sfIndexes");
258 expectEqualField(expected, fromBuilder, "sfIndexes");
259 }
260
261 {
262 auto const& expected = rootIndexValue;
263
264 auto const fromSle = entryFromSle.getRootIndex();
265 auto const fromBuilder = entryFromBuilder.getRootIndex();
266
267 expectEqualField(expected, fromSle, "sfRootIndex");
268 expectEqualField(expected, fromBuilder, "sfRootIndex");
269 }
270
271 {
272 auto const& expected = ownerValue;
273
274 auto const fromSleOpt = entryFromSle.getOwner();
275 auto const fromBuilderOpt = entryFromBuilder.getOwner();
276
277 ASSERT_TRUE(fromSleOpt.has_value());
278 ASSERT_TRUE(fromBuilderOpt.has_value());
279
280 expectEqualField(expected, *fromSleOpt, "sfOwner");
281 expectEqualField(expected, *fromBuilderOpt, "sfOwner");
282 }
283
284 {
285 auto const& expected = takerPaysCurrencyValue;
286
287 auto const fromSleOpt = entryFromSle.getTakerPaysCurrency();
288 auto const fromBuilderOpt = entryFromBuilder.getTakerPaysCurrency();
289
290 ASSERT_TRUE(fromSleOpt.has_value());
291 ASSERT_TRUE(fromBuilderOpt.has_value());
292
293 expectEqualField(expected, *fromSleOpt, "sfTakerPaysCurrency");
294 expectEqualField(expected, *fromBuilderOpt, "sfTakerPaysCurrency");
295 }
296
297 {
298 auto const& expected = takerPaysIssuerValue;
299
300 auto const fromSleOpt = entryFromSle.getTakerPaysIssuer();
301 auto const fromBuilderOpt = entryFromBuilder.getTakerPaysIssuer();
302
303 ASSERT_TRUE(fromSleOpt.has_value());
304 ASSERT_TRUE(fromBuilderOpt.has_value());
305
306 expectEqualField(expected, *fromSleOpt, "sfTakerPaysIssuer");
307 expectEqualField(expected, *fromBuilderOpt, "sfTakerPaysIssuer");
308 }
309
310 {
311 auto const& expected = takerPaysMPTValue;
312
313 auto const fromSleOpt = entryFromSle.getTakerPaysMPT();
314 auto const fromBuilderOpt = entryFromBuilder.getTakerPaysMPT();
315
316 ASSERT_TRUE(fromSleOpt.has_value());
317 ASSERT_TRUE(fromBuilderOpt.has_value());
318
319 expectEqualField(expected, *fromSleOpt, "sfTakerPaysMPT");
320 expectEqualField(expected, *fromBuilderOpt, "sfTakerPaysMPT");
321 }
322
323 {
324 auto const& expected = takerGetsCurrencyValue;
325
326 auto const fromSleOpt = entryFromSle.getTakerGetsCurrency();
327 auto const fromBuilderOpt = entryFromBuilder.getTakerGetsCurrency();
328
329 ASSERT_TRUE(fromSleOpt.has_value());
330 ASSERT_TRUE(fromBuilderOpt.has_value());
331
332 expectEqualField(expected, *fromSleOpt, "sfTakerGetsCurrency");
333 expectEqualField(expected, *fromBuilderOpt, "sfTakerGetsCurrency");
334 }
335
336 {
337 auto const& expected = takerGetsIssuerValue;
338
339 auto const fromSleOpt = entryFromSle.getTakerGetsIssuer();
340 auto const fromBuilderOpt = entryFromBuilder.getTakerGetsIssuer();
341
342 ASSERT_TRUE(fromSleOpt.has_value());
343 ASSERT_TRUE(fromBuilderOpt.has_value());
344
345 expectEqualField(expected, *fromSleOpt, "sfTakerGetsIssuer");
346 expectEqualField(expected, *fromBuilderOpt, "sfTakerGetsIssuer");
347 }
348
349 {
350 auto const& expected = takerGetsMPTValue;
351
352 auto const fromSleOpt = entryFromSle.getTakerGetsMPT();
353 auto const fromBuilderOpt = entryFromBuilder.getTakerGetsMPT();
354
355 ASSERT_TRUE(fromSleOpt.has_value());
356 ASSERT_TRUE(fromBuilderOpt.has_value());
357
358 expectEqualField(expected, *fromSleOpt, "sfTakerGetsMPT");
359 expectEqualField(expected, *fromBuilderOpt, "sfTakerGetsMPT");
360 }
361
362 {
363 auto const& expected = exchangeRateValue;
364
365 auto const fromSleOpt = entryFromSle.getExchangeRate();
366 auto const fromBuilderOpt = entryFromBuilder.getExchangeRate();
367
368 ASSERT_TRUE(fromSleOpt.has_value());
369 ASSERT_TRUE(fromBuilderOpt.has_value());
370
371 expectEqualField(expected, *fromSleOpt, "sfExchangeRate");
372 expectEqualField(expected, *fromBuilderOpt, "sfExchangeRate");
373 }
374
375 {
376 auto const& expected = indexNextValue;
377
378 auto const fromSleOpt = entryFromSle.getIndexNext();
379 auto const fromBuilderOpt = entryFromBuilder.getIndexNext();
380
381 ASSERT_TRUE(fromSleOpt.has_value());
382 ASSERT_TRUE(fromBuilderOpt.has_value());
383
384 expectEqualField(expected, *fromSleOpt, "sfIndexNext");
385 expectEqualField(expected, *fromBuilderOpt, "sfIndexNext");
386 }
387
388 {
389 auto const& expected = indexPreviousValue;
390
391 auto const fromSleOpt = entryFromSle.getIndexPrevious();
392 auto const fromBuilderOpt = entryFromBuilder.getIndexPrevious();
393
394 ASSERT_TRUE(fromSleOpt.has_value());
395 ASSERT_TRUE(fromBuilderOpt.has_value());
396
397 expectEqualField(expected, *fromSleOpt, "sfIndexPrevious");
398 expectEqualField(expected, *fromBuilderOpt, "sfIndexPrevious");
399 }
400
401 {
402 auto const& expected = nFTokenIDValue;
403
404 auto const fromSleOpt = entryFromSle.getNFTokenID();
405 auto const fromBuilderOpt = entryFromBuilder.getNFTokenID();
406
407 ASSERT_TRUE(fromSleOpt.has_value());
408 ASSERT_TRUE(fromBuilderOpt.has_value());
409
410 expectEqualField(expected, *fromSleOpt, "sfNFTokenID");
411 expectEqualField(expected, *fromBuilderOpt, "sfNFTokenID");
412 }
413
414 {
415 auto const& expected = previousTxnIDValue;
416
417 auto const fromSleOpt = entryFromSle.getPreviousTxnID();
418 auto const fromBuilderOpt = entryFromBuilder.getPreviousTxnID();
419
420 ASSERT_TRUE(fromSleOpt.has_value());
421 ASSERT_TRUE(fromBuilderOpt.has_value());
422
423 expectEqualField(expected, *fromSleOpt, "sfPreviousTxnID");
424 expectEqualField(expected, *fromBuilderOpt, "sfPreviousTxnID");
425 }
426
427 {
428 auto const& expected = previousTxnLgrSeqValue;
429
430 auto const fromSleOpt = entryFromSle.getPreviousTxnLgrSeq();
431 auto const fromBuilderOpt = entryFromBuilder.getPreviousTxnLgrSeq();
432
433 ASSERT_TRUE(fromSleOpt.has_value());
434 ASSERT_TRUE(fromBuilderOpt.has_value());
435
436 expectEqualField(expected, *fromSleOpt, "sfPreviousTxnLgrSeq");
437 expectEqualField(expected, *fromBuilderOpt, "sfPreviousTxnLgrSeq");
438 }
439
440 {
441 auto const& expected = domainIDValue;
442
443 auto const fromSleOpt = entryFromSle.getDomainID();
444 auto const fromBuilderOpt = entryFromBuilder.getDomainID();
445
446 ASSERT_TRUE(fromSleOpt.has_value());
447 ASSERT_TRUE(fromBuilderOpt.has_value());
448
449 expectEqualField(expected, *fromSleOpt, "sfDomainID");
450 expectEqualField(expected, *fromBuilderOpt, "sfDomainID");
451 }
452
453 EXPECT_EQ(entryFromSle.getKey(), index);
454 EXPECT_EQ(entryFromBuilder.getKey(), index);
455}
456
457// 3) Verify wrapper throws when constructed from wrong ledger entry type.
458TEST(DirectoryNodeTests, WrapperThrowsOnWrongEntryType)
459{
460 uint256 const index{3u};
461
462 // Build a valid ledger entry of a different type
463 // Ticket requires: Account, OwnerNode, TicketSequence, PreviousTxnID, PreviousTxnLgrSeq
464 // Check requires: Account, Destination, SendMax, Sequence, OwnerNode, DestinationNode, PreviousTxnID, PreviousTxnLgrSeq
465 TicketBuilder wrongBuilder{
471 auto wrongEntry = wrongBuilder.build(index);
472
473 EXPECT_THROW(DirectoryNode{wrongEntry.getSle()}, std::runtime_error);
474}
475
476// 4) Verify builder throws when constructed from wrong ledger entry type.
477TEST(DirectoryNodeTests, BuilderThrowsOnWrongEntryType)
478{
479 uint256 const index{4u};
480
481 // Build a valid ledger entry of a different type
482 TicketBuilder wrongBuilder{
488 auto wrongEntry = wrongBuilder.build(index);
489
490 EXPECT_THROW(DirectoryNodeBuilder{wrongEntry.getSle()}, std::runtime_error);
491}
492
493// 5) Build with only required fields and verify optional fields return nullopt.
494TEST(DirectoryNodeTests, OptionalFieldsReturnNullopt)
495{
496 uint256 const index{3u};
497
498 auto const indexesValue = canonical_VECTOR256();
499 auto const rootIndexValue = canonical_UINT256();
500
501 DirectoryNodeBuilder builder{
502 indexesValue,
503 rootIndexValue
504 };
505
506 auto const entry = builder.build(index);
507
508 // Verify optional fields are not present
509 EXPECT_FALSE(entry.hasOwner());
510 EXPECT_FALSE(entry.getOwner().has_value());
511 EXPECT_FALSE(entry.hasTakerPaysCurrency());
512 EXPECT_FALSE(entry.getTakerPaysCurrency().has_value());
513 EXPECT_FALSE(entry.hasTakerPaysIssuer());
514 EXPECT_FALSE(entry.getTakerPaysIssuer().has_value());
515 EXPECT_FALSE(entry.hasTakerPaysMPT());
516 EXPECT_FALSE(entry.getTakerPaysMPT().has_value());
517 EXPECT_FALSE(entry.hasTakerGetsCurrency());
518 EXPECT_FALSE(entry.getTakerGetsCurrency().has_value());
519 EXPECT_FALSE(entry.hasTakerGetsIssuer());
520 EXPECT_FALSE(entry.getTakerGetsIssuer().has_value());
521 EXPECT_FALSE(entry.hasTakerGetsMPT());
522 EXPECT_FALSE(entry.getTakerGetsMPT().has_value());
523 EXPECT_FALSE(entry.hasExchangeRate());
524 EXPECT_FALSE(entry.getExchangeRate().has_value());
525 EXPECT_FALSE(entry.hasIndexNext());
526 EXPECT_FALSE(entry.getIndexNext().has_value());
527 EXPECT_FALSE(entry.hasIndexPrevious());
528 EXPECT_FALSE(entry.getIndexPrevious().has_value());
529 EXPECT_FALSE(entry.hasNFTokenID());
530 EXPECT_FALSE(entry.getNFTokenID().has_value());
531 EXPECT_FALSE(entry.hasPreviousTxnID());
532 EXPECT_FALSE(entry.getPreviousTxnID().has_value());
533 EXPECT_FALSE(entry.hasPreviousTxnLgrSeq());
534 EXPECT_FALSE(entry.getPreviousTxnLgrSeq().has_value());
535 EXPECT_FALSE(entry.hasDomainID());
536 EXPECT_FALSE(entry.getDomainID().has_value());
537}
538}
Builder for DirectoryNode ledger entries.
DirectoryNodeBuilder & setTakerPaysMPT(std::decay_t< typename SF_UINT192::type::value_type > const &value)
Set sfTakerPaysMPT (SoeOptional).
DirectoryNodeBuilder & setTakerGetsIssuer(std::decay_t< typename SF_UINT160::type::value_type > const &value)
Set sfTakerGetsIssuer (SoeOptional).
DirectoryNodeBuilder & setDomainID(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfDomainID (SoeOptional).
DirectoryNodeBuilder & setPreviousTxnLgrSeq(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfPreviousTxnLgrSeq (SoeOptional).
DirectoryNodeBuilder & setTakerGetsCurrency(std::decay_t< typename SF_UINT160::type::value_type > const &value)
Set sfTakerGetsCurrency (SoeOptional).
DirectoryNodeBuilder & setIndexNext(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfIndexNext (SoeOptional).
DirectoryNodeBuilder & setTakerPaysIssuer(std::decay_t< typename SF_UINT160::type::value_type > const &value)
Set sfTakerPaysIssuer (SoeOptional).
DirectoryNodeBuilder & setIndexPrevious(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfIndexPrevious (SoeOptional).
DirectoryNodeBuilder & setNFTokenID(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfNFTokenID (SoeOptional).
DirectoryNodeBuilder & setPreviousTxnID(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfPreviousTxnID (SoeOptional).
DirectoryNodeBuilder & setTakerGetsMPT(std::decay_t< typename SF_UINT192::type::value_type > const &value)
Set sfTakerGetsMPT (SoeOptional).
DirectoryNodeBuilder & setExchangeRate(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfExchangeRate (SoeOptional).
DirectoryNodeBuilder & setTakerPaysCurrency(std::decay_t< typename SF_UINT160::type::value_type > const &value)
Set sfTakerPaysCurrency (SoeOptional).
DirectoryNodeBuilder & setOwner(std::decay_t< typename SF_ACCOUNT::type::value_type > const &value)
Ledger entry-specific field setters.
DirectoryNode build(uint256 const &index)
Build and return the completed DirectoryNode wrapper.
Ledger Entry: DirectoryNode.
SF_UINT256::type::value_type getRootIndex() const
Get sfRootIndex (SoeRequired).
protocol_autogen::Optional< SF_UINT64::type::value_type > getIndexNext() const
Get sfIndexNext (SoeOptional).
protocol_autogen::Optional< SF_ACCOUNT::type::value_type > getOwner() const
Get sfOwner (SoeOptional).
protocol_autogen::Optional< SF_UINT192::type::value_type > getTakerGetsMPT() const
Get sfTakerGetsMPT (SoeOptional).
protocol_autogen::Optional< SF_UINT64::type::value_type > getIndexPrevious() const
Get sfIndexPrevious (SoeOptional).
protocol_autogen::Optional< SF_UINT160::type::value_type > getTakerPaysCurrency() const
Get sfTakerPaysCurrency (SoeOptional).
protocol_autogen::Optional< SF_UINT256::type::value_type > getNFTokenID() const
Get sfNFTokenID (SoeOptional).
protocol_autogen::Optional< SF_UINT32::type::value_type > getPreviousTxnLgrSeq() const
Get sfPreviousTxnLgrSeq (SoeOptional).
protocol_autogen::Optional< SF_UINT160::type::value_type > getTakerGetsIssuer() const
Get sfTakerGetsIssuer (SoeOptional).
protocol_autogen::Optional< SF_UINT192::type::value_type > getTakerPaysMPT() const
Get sfTakerPaysMPT (SoeOptional).
SF_VECTOR256::type::value_type getIndexes() const
Get sfIndexes (SoeRequired).
protocol_autogen::Optional< SF_UINT256::type::value_type > getDomainID() const
Get sfDomainID (SoeOptional).
protocol_autogen::Optional< SF_UINT64::type::value_type > getExchangeRate() const
Get sfExchangeRate (SoeOptional).
protocol_autogen::Optional< SF_UINT160::type::value_type > getTakerGetsCurrency() const
Get sfTakerGetsCurrency (SoeOptional).
protocol_autogen::Optional< SF_UINT160::type::value_type > getTakerPaysIssuer() const
Get sfTakerPaysIssuer (SoeOptional).
static constexpr LedgerEntryType entryType
protocol_autogen::Optional< SF_UINT256::type::value_type > getPreviousTxnID() const
Get sfPreviousTxnID (SoeOptional).
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 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)
Vector256Value canonical_VECTOR256()
BaseUInt< 256 > uint256
Definition base_uint.h:562
void expectEqualField(T const &expected, T const &actual, char const *fieldName)