rippled
Loading...
Searching...
No Matches
XChainOwnedCreateAccountClaimIDTests.cpp
1// Auto-generated unit tests for ledger entry XChainOwnedCreateAccountClaimID
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/XChainOwnedCreateAccountClaimID.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(XChainOwnedCreateAccountClaimIDTests, BuilderSettersRoundTrip)
20{
21 uint256 const index{1u};
22
23 auto const accountValue = canonical_ACCOUNT();
24 auto const xChainBridgeValue = canonical_XCHAIN_BRIDGE();
25 auto const xChainAccountCreateCountValue = canonical_UINT64();
26 auto const xChainCreateAccountAttestationsValue = canonical_ARRAY();
27 auto const ownerNodeValue = canonical_UINT64();
28 auto const previousTxnIDValue = canonical_UINT256();
29 auto const previousTxnLgrSeqValue = canonical_UINT32();
30
32 accountValue,
33 xChainBridgeValue,
34 xChainAccountCreateCountValue,
35 xChainCreateAccountAttestationsValue,
36 ownerNodeValue,
37 previousTxnIDValue,
38 previousTxnLgrSeqValue
39 };
40
41
42 builder.setLedgerIndex(index);
43 builder.setFlags(0x1u);
44
45 EXPECT_TRUE(builder.validate());
46
47 auto const entry = builder.build(index);
48
49 EXPECT_TRUE(entry.validate());
50
51 {
52 auto const& expected = accountValue;
53 auto const actual = entry.getAccount();
54 expectEqualField(expected, actual, "sfAccount");
55 }
56
57 {
58 auto const& expected = xChainBridgeValue;
59 auto const actual = entry.getXChainBridge();
60 expectEqualField(expected, actual, "sfXChainBridge");
61 }
62
63 {
64 auto const& expected = xChainAccountCreateCountValue;
65 auto const actual = entry.getXChainAccountCreateCount();
66 expectEqualField(expected, actual, "sfXChainAccountCreateCount");
67 }
68
69 {
70 auto const& expected = xChainCreateAccountAttestationsValue;
71 auto const actual = entry.getXChainCreateAccountAttestations();
72 expectEqualField(expected, actual, "sfXChainCreateAccountAttestations");
73 }
74
75 {
76 auto const& expected = ownerNodeValue;
77 auto const actual = entry.getOwnerNode();
78 expectEqualField(expected, actual, "sfOwnerNode");
79 }
80
81 {
82 auto const& expected = previousTxnIDValue;
83 auto const actual = entry.getPreviousTxnID();
84 expectEqualField(expected, actual, "sfPreviousTxnID");
85 }
86
87 {
88 auto const& expected = previousTxnLgrSeqValue;
89 auto const actual = entry.getPreviousTxnLgrSeq();
90 expectEqualField(expected, actual, "sfPreviousTxnLgrSeq");
91 }
92
93 EXPECT_TRUE(entry.hasLedgerIndex());
94 auto const ledgerIndex = entry.getLedgerIndex();
95 ASSERT_TRUE(ledgerIndex.has_value());
96 EXPECT_EQ(*ledgerIndex, index);
97 EXPECT_EQ(entry.getKey(), index);
98}
99
100// 2 & 4) Start from an SLE, set fields directly on it, construct a builder
101// from that SLE, build a new wrapper, and verify all fields (and validate()).
102TEST(XChainOwnedCreateAccountClaimIDTests, BuilderFromSleRoundTrip)
103{
104 uint256 const index{2u};
105
106 auto const accountValue = canonical_ACCOUNT();
107 auto const xChainBridgeValue = canonical_XCHAIN_BRIDGE();
108 auto const xChainAccountCreateCountValue = canonical_UINT64();
109 auto const xChainCreateAccountAttestationsValue = canonical_ARRAY();
110 auto const ownerNodeValue = canonical_UINT64();
111 auto const previousTxnIDValue = canonical_UINT256();
112 auto const previousTxnLgrSeqValue = canonical_UINT32();
113
115
116 sle->at(sfAccount) = accountValue;
117 sle->at(sfXChainBridge) = xChainBridgeValue;
118 sle->at(sfXChainAccountCreateCount) = xChainAccountCreateCountValue;
119 sle->setFieldArray(sfXChainCreateAccountAttestations, xChainCreateAccountAttestationsValue);
120 sle->at(sfOwnerNode) = ownerNodeValue;
121 sle->at(sfPreviousTxnID) = previousTxnIDValue;
122 sle->at(sfPreviousTxnLgrSeq) = previousTxnLgrSeqValue;
123
124 XChainOwnedCreateAccountClaimIDBuilder builderFromSle{sle};
125 EXPECT_TRUE(builderFromSle.validate());
126
127 auto const entryFromBuilder = builderFromSle.build(index);
128
129 XChainOwnedCreateAccountClaimID entryFromSle{sle};
130 EXPECT_TRUE(entryFromBuilder.validate());
131 EXPECT_TRUE(entryFromSle.validate());
132
133 {
134 auto const& expected = accountValue;
135
136 auto const fromSle = entryFromSle.getAccount();
137 auto const fromBuilder = entryFromBuilder.getAccount();
138
139 expectEqualField(expected, fromSle, "sfAccount");
140 expectEqualField(expected, fromBuilder, "sfAccount");
141 }
142
143 {
144 auto const& expected = xChainBridgeValue;
145
146 auto const fromSle = entryFromSle.getXChainBridge();
147 auto const fromBuilder = entryFromBuilder.getXChainBridge();
148
149 expectEqualField(expected, fromSle, "sfXChainBridge");
150 expectEqualField(expected, fromBuilder, "sfXChainBridge");
151 }
152
153 {
154 auto const& expected = xChainAccountCreateCountValue;
155
156 auto const fromSle = entryFromSle.getXChainAccountCreateCount();
157 auto const fromBuilder = entryFromBuilder.getXChainAccountCreateCount();
158
159 expectEqualField(expected, fromSle, "sfXChainAccountCreateCount");
160 expectEqualField(expected, fromBuilder, "sfXChainAccountCreateCount");
161 }
162
163 {
164 auto const& expected = xChainCreateAccountAttestationsValue;
165
166 auto const fromSle = entryFromSle.getXChainCreateAccountAttestations();
167 auto const fromBuilder = entryFromBuilder.getXChainCreateAccountAttestations();
168
169 expectEqualField(expected, fromSle, "sfXChainCreateAccountAttestations");
170 expectEqualField(expected, fromBuilder, "sfXChainCreateAccountAttestations");
171 }
172
173 {
174 auto const& expected = ownerNodeValue;
175
176 auto const fromSle = entryFromSle.getOwnerNode();
177 auto const fromBuilder = entryFromBuilder.getOwnerNode();
178
179 expectEqualField(expected, fromSle, "sfOwnerNode");
180 expectEqualField(expected, fromBuilder, "sfOwnerNode");
181 }
182
183 {
184 auto const& expected = previousTxnIDValue;
185
186 auto const fromSle = entryFromSle.getPreviousTxnID();
187 auto const fromBuilder = entryFromBuilder.getPreviousTxnID();
188
189 expectEqualField(expected, fromSle, "sfPreviousTxnID");
190 expectEqualField(expected, fromBuilder, "sfPreviousTxnID");
191 }
192
193 {
194 auto const& expected = previousTxnLgrSeqValue;
195
196 auto const fromSle = entryFromSle.getPreviousTxnLgrSeq();
197 auto const fromBuilder = entryFromBuilder.getPreviousTxnLgrSeq();
198
199 expectEqualField(expected, fromSle, "sfPreviousTxnLgrSeq");
200 expectEqualField(expected, fromBuilder, "sfPreviousTxnLgrSeq");
201 }
202
203 EXPECT_EQ(entryFromSle.getKey(), index);
204 EXPECT_EQ(entryFromBuilder.getKey(), index);
205}
206
207// 3) Verify wrapper throws when constructed from wrong ledger entry type.
208TEST(XChainOwnedCreateAccountClaimIDTests, WrapperThrowsOnWrongEntryType)
209{
210 uint256 const index{3u};
211
212 // Build a valid ledger entry of a different type
213 // Ticket requires: Account, OwnerNode, TicketSequence, PreviousTxnID, PreviousTxnLgrSeq
214 // Check requires: Account, Destination, SendMax, Sequence, OwnerNode, DestinationNode, PreviousTxnID, PreviousTxnLgrSeq
215 TicketBuilder wrongBuilder{
221 auto wrongEntry = wrongBuilder.build(index);
222
223 EXPECT_THROW(XChainOwnedCreateAccountClaimID{wrongEntry.getSle()}, std::runtime_error);
224}
225
226// 4) Verify builder throws when constructed from wrong ledger entry type.
227TEST(XChainOwnedCreateAccountClaimIDTests, BuilderThrowsOnWrongEntryType)
228{
229 uint256 const index{4u};
230
231 // Build a valid ledger entry of a different type
232 TicketBuilder wrongBuilder{
238 auto wrongEntry = wrongBuilder.build(index);
239
240 EXPECT_THROW(XChainOwnedCreateAccountClaimIDBuilder{wrongEntry.getSle()}, std::runtime_error);
241}
242
243}
std::shared_ptr< SLE const > getSle() const
Get the underlying SLE object.
Derived & setLedgerIndex(uint256 const &value)
Set the ledger index.
Derived & setFlags(uint32_t value)
Set the flags.
Builder for Ticket ledger entries.
Definition Ticket.h:112
Builder for XChainOwnedCreateAccountClaimID ledger entries.
T is_same_v
TEST(AccountRootTests, BuilderSettersRoundTrip)
XChainBridgeValue canonical_XCHAIN_BRIDGE()
void expectEqualField(T const &expected, T const &actual, char const *fieldName)