xrpld
Loading...
Searching...
No Matches
/libxrpl/protocol_autogen/TestHelpers.h
1#pragma once
2
3#include <xrpl/basics/Number.h>
4#include <xrpl/basics/Slice.h>
5#include <xrpl/protocol/AccountID.h>
6#include <xrpl/protocol/Asset.h>
7#include <xrpl/protocol/Issue.h>
8#include <xrpl/protocol/SField.h>
9#include <xrpl/protocol/STAmount.h>
10#include <xrpl/protocol/STArray.h>
11#include <xrpl/protocol/STBlob.h>
12#include <xrpl/protocol/STInteger.h> // IWYU pragma: keep
13#include <xrpl/protocol/STNumber.h>
14#include <xrpl/protocol/STObject.h>
15#include <xrpl/protocol/STPathSet.h>
16#include <xrpl/protocol/STVector256.h>
17#include <xrpl/protocol/STXChainBridge.h>
18#include <xrpl/protocol/UintTypes.h>
19
20#include <gtest/gtest.h>
21
22#include <array>
23#include <cstdint>
24#include <functional>
25#include <type_traits>
26#include <vector>
27
28namespace xrpl {
29
30// Typed field canonical values
31
33inline UInt8Value
35{
36 return UInt8Value{1};
37}
38
40inline UInt16Value
42{
43 return UInt16Value{1};
44}
45
47inline UInt32Value
49{
50 return UInt32Value{1};
51}
52
54inline UInt64Value
56{
57 return UInt64Value{1};
58}
59
61inline UInt128Value
63{
64 return UInt128Value{1};
65}
66
68inline UInt160Value
70{
71 return UInt160Value{1};
72}
73
75inline UInt192Value
77{
78 return UInt192Value{1};
79}
80
82inline UInt256Value
84{
85 return UInt256Value{1};
86}
87
89inline Int32Value
91{
92 return Int32Value{42};
93}
94
96inline NumberValue
98{
99 return NumberValue{123};
100}
101
103inline AmountValue
105{
106 return AmountValue{XRPAmount{1}};
107}
108
110inline AccountValue
112{
113 return xrpAccount();
114}
115
117inline CurrencyValue
119{
120 return xrpCurrency();
121}
122
124inline IssueValue
126{
127 return IssueValue{xrpIssue()};
128}
129
131inline Vector256Value
133{
134 return Vector256Value{UInt256{1}};
135}
136
138inline BlobValue
140{
141 static constexpr std::array<std::uint8_t, 3> data{{'a', 'b', 'c'}};
142 return BlobValue{data.data(), data.size()};
143}
144
151
152// Untyped field canonical values
153
154inline STArray
156{
157 return STArray{};
158}
159
160inline STObject
162{
163 return STObject{sfGeneric};
164}
165
166inline STPathSet
168{
169 STPathSet result{};
170 result.pushBack(STPath{});
171 return result;
172}
173
174// Field comparison helpers for generated tests
175
176template <class T>
177void
178expectEqualField(T const& expected, T const& actual, char const* fieldName)
179{
180 EXPECT_EQ(expected, actual) << "Field " << fieldName << " mismatch";
181}
182
183// Specialization for STObject (no operator==, use isEquivalent)
184template <>
185inline void
186expectEqualField<STObject>(STObject const& expected, STObject const& actual, char const* fieldName)
187{
188 EXPECT_TRUE(expected.isEquivalent(actual)) << "Field " << fieldName << " mismatch";
189}
190
191// Specialization for STPathSet (no operator==, use isEquivalent)
192template <>
193inline void
195 STPathSet const& expected,
196 STPathSet const& actual,
197 char const* fieldName)
198{
199 EXPECT_TRUE(expected.isEquivalent(actual)) << "Field " << fieldName << " mismatch";
200}
201
202// Overloads for std::reference_wrapper (used by optional ARRAY/PATHSET fields)
203template <class T>
204void
205expectEqualField(T const& expected, std::reference_wrapper<T const> actual, char const* fieldName)
206{
207 expectEqualField(expected, actual.get(), fieldName);
208}
209
210} // namespace xrpl
bool isEquivalent(STBase const &t) const override
Definition STObject.cpp:351
bool pushBack(STPath const &e)
pushBack adds a path to the set.
Definition STPathSet.h:669
bool isEquivalent(STBase const &t) const override
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
std::decay_t< typename SF_VECTOR256::type::value_type > Vector256Value
Issue const & xrpIssue()
Returns an asset specifier that represents XRP.
Definition Issue.h:108
std::decay_t< typename SF_UINT256::type::value_type > UInt256Value
std::decay_t< typename SF_ACCOUNT::type::value_type > AccountValue
void expectEqualField< STPathSet >(STPathSet const &expected, STPathSet const &actual, char const *fieldName)
std::decay_t< typename SF_UINT192::type::value_type > UInt192Value
std::decay_t< typename SF_XCHAIN_BRIDGE::type::value_type > XChainBridgeValue
std::decay_t< typename SF_UINT64::type::value_type > UInt64Value
Vector256Value canonical_VECTOR256()
SField const sfGeneric
std::decay_t< typename SF_INT32::type::value_type > Int32Value
XChainBridgeValue canonical_XCHAIN_BRIDGE()
Currency const & xrpCurrency()
XRP currency.
Definition UintTypes.cpp:99
std::decay_t< typename SF_UINT16::type::value_type > UInt16Value
void expectEqualField< STObject >(STObject const &expected, STObject const &actual, char const *fieldName)
BaseUInt< 256 > UInt256
Definition base_uint.h:580
std::decay_t< typename SF_AMOUNT::type::value_type > AmountValue
std::decay_t< typename SF_ISSUE::type::value_type > IssueValue
std::decay_t< typename SF_CURRENCY::type::value_type > CurrencyValue
CurrencyValue canonical_CURRENCY()
std::decay_t< typename SF_UINT32::type::value_type > UInt32Value
std::decay_t< typename SF_UINT8::type::value_type > UInt8Value
AccountID const & xrpAccount()
Compute AccountID from public key.
std::decay_t< typename SF_UINT160::type::value_type > UInt160Value
std::decay_t< typename SF_UINT128::type::value_type > UInt128Value
std::decay_t< typename SF_VL::type::value_type > BlobValue
std::decay_t< typename SF_NUMBER::type::value_type > NumberValue
void expectEqualField(T const &expected, T const &actual, char const *fieldName)