4#include <gtest/gtest.h>
6#include <protocol_autogen/TestHelpers.h>
8#include <xrpl/protocol/SecretKey.h>
9#include <xrpl/protocol/Seed.h>
10#include <xrpl/protocol/STTx.h>
11#include <xrpl/protocol_autogen/transactions/XChainClaim.h>
12#include <xrpl/protocol_autogen/transactions/AccountSet.h>
20TEST(TransactionsXChainClaimTests, BuilderSettersRoundTrip)
23 auto const [publicKey, secretKey] =
51 auto tx = builder.
build(publicKey, secretKey);
54 EXPECT_TRUE(tx.validate(reason)) << reason;
57 EXPECT_FALSE(tx.getSigningPubKey().empty());
58 EXPECT_TRUE(tx.hasTxnSignature());
61 EXPECT_EQ(tx.getAccount(), accountValue);
62 EXPECT_EQ(tx.getSequence(), sequenceValue);
63 EXPECT_EQ(tx.getFee(), feeValue);
67 auto const& expected = xChainBridgeValue;
68 auto const actual = tx.getXChainBridge();
73 auto const& expected = xChainClaimIDValue;
74 auto const actual = tx.getXChainClaimID();
79 auto const& expected = destinationValue;
80 auto const actual = tx.getDestination();
85 auto const& expected = amountValue;
86 auto const actual = tx.getAmount();
92 auto const& expected = destinationTagValue;
93 auto const actualOpt = tx.getDestinationTag();
94 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfDestinationTag should be present";
96 EXPECT_TRUE(tx.hasDestinationTag());
103TEST(TransactionsXChainClaimTests, BuilderFromStTxRoundTrip)
106 auto const [publicKey, secretKey] =
134 auto initialTx = initialBuilder.
build(publicKey, secretKey);
139 auto rebuiltTx = builderFromTx.
build(publicKey, secretKey);
142 EXPECT_TRUE(rebuiltTx.validate(reason)) << reason;
145 EXPECT_EQ(rebuiltTx.getAccount(), accountValue);
146 EXPECT_EQ(rebuiltTx.getSequence(), sequenceValue);
147 EXPECT_EQ(rebuiltTx.getFee(), feeValue);
151 auto const& expected = xChainBridgeValue;
152 auto const actual = rebuiltTx.getXChainBridge();
157 auto const& expected = xChainClaimIDValue;
158 auto const actual = rebuiltTx.getXChainClaimID();
163 auto const& expected = destinationValue;
164 auto const actual = rebuiltTx.getDestination();
169 auto const& expected = amountValue;
170 auto const actual = rebuiltTx.getAmount();
176 auto const& expected = destinationTagValue;
177 auto const actualOpt = rebuiltTx.getDestinationTag();
178 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfDestinationTag should be present";
185TEST(TransactionsXChainClaimTests, WrapperThrowsOnWrongTxType)
188 auto const [pk, sk] =
193 auto wrongTx = wrongBuilder.
build(pk, sk);
199TEST(TransactionsXChainClaimTests, BuilderThrowsOnWrongTxType)
202 auto const [pk, sk] =
207 auto wrongTx = wrongBuilder.
build(pk, sk);
213TEST(TransactionsXChainClaimTests, OptionalFieldsReturnNullopt)
216 auto const [publicKey, secretKey] =
242 auto tx = builder.
build(publicKey, secretKey);
245 EXPECT_FALSE(tx.hasDestinationTag());
246 EXPECT_FALSE(tx.getDestinationTag().has_value());
Builder for AccountSet transactions.
AccountSet build(PublicKey const &publicKey, SecretKey const &secretKey)
Build and return the AccountSet wrapper.
Builder for XChainClaim transactions.
XChainClaimBuilder & setDestinationTag(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfDestinationTag (SoeOptional).
XChainClaim build(PublicKey const &publicKey, SecretKey const &secretKey)
Build and return the XChainClaim wrapper.
Transaction: XChainClaim.
TEST(TransactionsAccountDeleteTests, BuilderSettersRoundTrip)
UInt32Value canonical_UINT32()
AccountValue canonical_ACCOUNT()
Seed generateSeed(std::string const &passPhrase)
Generate a seed deterministically.
XChainBridgeValue canonical_XCHAIN_BRIDGE()
std::pair< PublicKey, SecretKey > generateKeyPair(KeyType type, Seed const &seed)
Generate a key pair deterministically.
AmountValue canonical_AMOUNT()
AccountID calcAccountID(PublicKey const &pk)
UInt64Value canonical_UINT64()
void expectEqualField(T const &expected, T const &actual, char const *fieldName)