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/XChainCommit.h>
12#include <xrpl/protocol_autogen/transactions/AccountSet.h>
20TEST(TransactionsXChainCommitTests, BuilderSettersRoundTrip)
23 auto const [publicKey, secretKey] =
49 auto tx = builder.
build(publicKey, secretKey);
52 EXPECT_TRUE(tx.validate(reason)) << reason;
55 EXPECT_FALSE(tx.getSigningPubKey().empty());
56 EXPECT_TRUE(tx.hasTxnSignature());
59 EXPECT_EQ(tx.getAccount(), accountValue);
60 EXPECT_EQ(tx.getSequence(), sequenceValue);
61 EXPECT_EQ(tx.getFee(), feeValue);
65 auto const& expected = xChainBridgeValue;
66 auto const actual = tx.getXChainBridge();
71 auto const& expected = xChainClaimIDValue;
72 auto const actual = tx.getXChainClaimID();
77 auto const& expected = amountValue;
78 auto const actual = tx.getAmount();
84 auto const& expected = otherChainDestinationValue;
85 auto const actualOpt = tx.getOtherChainDestination();
86 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfOtherChainDestination should be present";
88 EXPECT_TRUE(tx.hasOtherChainDestination());
95TEST(TransactionsXChainCommitTests, BuilderFromStTxRoundTrip)
98 auto const [publicKey, secretKey] =
124 auto initialTx = initialBuilder.
build(publicKey, secretKey);
129 auto rebuiltTx = builderFromTx.
build(publicKey, secretKey);
132 EXPECT_TRUE(rebuiltTx.validate(reason)) << reason;
135 EXPECT_EQ(rebuiltTx.getAccount(), accountValue);
136 EXPECT_EQ(rebuiltTx.getSequence(), sequenceValue);
137 EXPECT_EQ(rebuiltTx.getFee(), feeValue);
141 auto const& expected = xChainBridgeValue;
142 auto const actual = rebuiltTx.getXChainBridge();
147 auto const& expected = xChainClaimIDValue;
148 auto const actual = rebuiltTx.getXChainClaimID();
153 auto const& expected = amountValue;
154 auto const actual = rebuiltTx.getAmount();
160 auto const& expected = otherChainDestinationValue;
161 auto const actualOpt = rebuiltTx.getOtherChainDestination();
162 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfOtherChainDestination should be present";
169TEST(TransactionsXChainCommitTests, WrapperThrowsOnWrongTxType)
172 auto const [pk, sk] =
177 auto wrongTx = wrongBuilder.
build(pk, sk);
183TEST(TransactionsXChainCommitTests, BuilderThrowsOnWrongTxType)
186 auto const [pk, sk] =
191 auto wrongTx = wrongBuilder.
build(pk, sk);
197TEST(TransactionsXChainCommitTests, OptionalFieldsReturnNullopt)
200 auto const [publicKey, secretKey] =
224 auto tx = builder.
build(publicKey, secretKey);
227 EXPECT_FALSE(tx.hasOtherChainDestination());
228 EXPECT_FALSE(tx.getOtherChainDestination().has_value());
Builder for AccountSet transactions.
AccountSet build(PublicKey const &publicKey, SecretKey const &secretKey)
Build and return the AccountSet wrapper.
Builder for XChainCommit transactions.
XChainCommit build(PublicKey const &publicKey, SecretKey const &secretKey)
Build and return the XChainCommit wrapper.
XChainCommitBuilder & setOtherChainDestination(std::decay_t< typename SF_ACCOUNT::type::value_type > const &value)
Set sfOtherChainDestination (SoeOptional).
Transaction: XChainCommit.
TEST(TransactionsAccountDeleteTests, BuilderSettersRoundTrip)
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)