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