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/VaultSet.h>
12#include <xrpl/protocol_autogen/transactions/AccountSet.h>
20TEST(TransactionsVaultSetTests, 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 = vaultIDValue;
66 auto const actual = tx.getVaultID();
72 auto const& expected = assetsMaximumValue;
73 auto const actualOpt = tx.getAssetsMaximum();
74 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfAssetsMaximum should be present";
76 EXPECT_TRUE(tx.hasAssetsMaximum());
80 auto const& expected = domainIDValue;
81 auto const actualOpt = tx.getDomainID();
82 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfDomainID should be present";
84 EXPECT_TRUE(tx.hasDomainID());
88 auto const& expected = dataValue;
89 auto const actualOpt = tx.getData();
90 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfData should be present";
92 EXPECT_TRUE(tx.hasData());
99TEST(TransactionsVaultSetTests, BuilderFromStTxRoundTrip)
102 auto const [publicKey, secretKey] =
126 initialBuilder.
setData(dataValue);
128 auto initialTx = initialBuilder.
build(publicKey, secretKey);
133 auto rebuiltTx = builderFromTx.
build(publicKey, secretKey);
136 EXPECT_TRUE(rebuiltTx.validate(reason)) << reason;
139 EXPECT_EQ(rebuiltTx.getAccount(), accountValue);
140 EXPECT_EQ(rebuiltTx.getSequence(), sequenceValue);
141 EXPECT_EQ(rebuiltTx.getFee(), feeValue);
145 auto const& expected = vaultIDValue;
146 auto const actual = rebuiltTx.getVaultID();
152 auto const& expected = assetsMaximumValue;
153 auto const actualOpt = rebuiltTx.getAssetsMaximum();
154 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfAssetsMaximum should be present";
159 auto const& expected = domainIDValue;
160 auto const actualOpt = rebuiltTx.getDomainID();
161 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfDomainID should be present";
166 auto const& expected = dataValue;
167 auto const actualOpt = rebuiltTx.getData();
168 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfData should be present";
175TEST(TransactionsVaultSetTests, WrapperThrowsOnWrongTxType)
178 auto const [pk, sk] =
183 auto wrongTx = wrongBuilder.
build(pk, sk);
189TEST(TransactionsVaultSetTests, BuilderThrowsOnWrongTxType)
192 auto const [pk, sk] =
197 auto wrongTx = wrongBuilder.
build(pk, sk);
203TEST(TransactionsVaultSetTests, OptionalFieldsReturnNullopt)
206 auto const [publicKey, secretKey] =
226 auto tx = builder.
build(publicKey, secretKey);
229 EXPECT_FALSE(tx.hasAssetsMaximum());
230 EXPECT_FALSE(tx.getAssetsMaximum().has_value());
231 EXPECT_FALSE(tx.hasDomainID());
232 EXPECT_FALSE(tx.getDomainID().has_value());
233 EXPECT_FALSE(tx.hasData());
234 EXPECT_FALSE(tx.getData().has_value());
Builder for AccountSet transactions.
AccountSet build(PublicKey const &publicKey, SecretKey const &secretKey)
Build and return the AccountSet wrapper.
Builder for VaultSet transactions.
VaultSetBuilder & setData(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfData (SoeOptional).
VaultSetBuilder & setAssetsMaximum(std::decay_t< typename SF_NUMBER::type::value_type > const &value)
Set sfAssetsMaximum (SoeOptional).
VaultSetBuilder & setDomainID(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfDomainID (SoeOptional).
VaultSet build(PublicKey const &publicKey, SecretKey const &secretKey)
Build and return the VaultSet wrapper.
TEST(TransactionsAccountDeleteTests, BuilderSettersRoundTrip)
UInt256Value canonical_UINT256()
Seed generateSeed(std::string const &passPhrase)
Generate a seed deterministically.
std::pair< PublicKey, SecretKey > generateKeyPair(KeyType type, Seed const &seed)
Generate a key pair deterministically.
AmountValue canonical_AMOUNT()
AccountID calcAccountID(PublicKey const &pk)
NumberValue canonical_NUMBER()
void expectEqualField(T const &expected, T const &actual, char const *fieldName)