xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
tests
libxrpl
protocol_autogen
ledger_entries
TicketTests.cpp
1
// Auto-generated unit tests for ledger entry Ticket
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/Ticket.h>
10
#include <xrpl/protocol_autogen/ledger_entries/Check.h>
11
12
#include <
string
>
13
14
namespace
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.
19
TEST
(TicketTests, BuilderSettersRoundTrip)
20
{
21
UInt256
const
index{1u};
22
23
auto
const
accountValue =
canonical_ACCOUNT
();
24
auto
const
ownerNodeValue =
canonical_UINT64
();
25
auto
const
ticketSequenceValue =
canonical_UINT32
();
26
auto
const
previousTxnIDValue =
canonical_UINT256
();
27
auto
const
previousTxnLgrSeqValue =
canonical_UINT32
();
28
29
TicketBuilder
builder{
30
accountValue,
31
ownerNodeValue,
32
ticketSequenceValue,
33
previousTxnIDValue,
34
previousTxnLgrSeqValue
35
};
36
37
38
builder.
setLedgerIndex
(index);
39
builder.
setFlags
(0x1u);
40
41
EXPECT_TRUE(builder.
validate
());
42
43
auto
const
entry = builder.
build
(index);
44
45
EXPECT_TRUE(entry.validate());
46
47
{
48
auto
const
& expected = accountValue;
49
auto
const
actual = entry.getAccount();
50
expectEqualField
(expected, actual,
"sfAccount"
);
51
}
52
53
{
54
auto
const
& expected = ownerNodeValue;
55
auto
const
actual = entry.getOwnerNode();
56
expectEqualField
(expected, actual,
"sfOwnerNode"
);
57
}
58
59
{
60
auto
const
& expected = ticketSequenceValue;
61
auto
const
actual = entry.getTicketSequence();
62
expectEqualField
(expected, actual,
"sfTicketSequence"
);
63
}
64
65
{
66
auto
const
& expected = previousTxnIDValue;
67
auto
const
actual = entry.getPreviousTxnID();
68
expectEqualField
(expected, actual,
"sfPreviousTxnID"
);
69
}
70
71
{
72
auto
const
& expected = previousTxnLgrSeqValue;
73
auto
const
actual = entry.getPreviousTxnLgrSeq();
74
expectEqualField
(expected, actual,
"sfPreviousTxnLgrSeq"
);
75
}
76
77
EXPECT_TRUE(entry.hasLedgerIndex());
78
auto
const
ledgerIndex = entry.getLedgerIndex();
79
ASSERT_TRUE(ledgerIndex.has_value());
80
EXPECT_EQ(*ledgerIndex, index);
81
EXPECT_EQ(entry.getKey(), index);
82
}
83
84
// 2 & 4) Start from an SLE, set fields directly on it, construct a builder
85
// from that SLE, build a new wrapper, and verify all fields (and validate()).
86
TEST
(TicketTests, BuilderFromSleRoundTrip)
87
{
88
UInt256
const
index{2u};
89
90
auto
const
accountValue =
canonical_ACCOUNT
();
91
auto
const
ownerNodeValue =
canonical_UINT64
();
92
auto
const
ticketSequenceValue =
canonical_UINT32
();
93
auto
const
previousTxnIDValue =
canonical_UINT256
();
94
auto
const
previousTxnLgrSeqValue =
canonical_UINT32
();
95
96
auto
sle =
std::make_shared<SLE>
(
Ticket::entryType
, index);
97
98
sle->at(sfAccount) = accountValue;
99
sle->at(sfOwnerNode) = ownerNodeValue;
100
sle->at(sfTicketSequence) = ticketSequenceValue;
101
sle->at(sfPreviousTxnID) = previousTxnIDValue;
102
sle->at(sfPreviousTxnLgrSeq) = previousTxnLgrSeqValue;
103
104
TicketBuilder
builderFromSle{sle};
105
EXPECT_TRUE(builderFromSle.
validate
());
106
107
auto
const
entryFromBuilder = builderFromSle.
build
(index);
108
109
Ticket
entryFromSle{sle};
110
EXPECT_TRUE(entryFromBuilder.validate());
111
EXPECT_TRUE(entryFromSle.
validate
());
112
113
{
114
auto
const
& expected = accountValue;
115
116
auto
const
fromSle = entryFromSle.
getAccount
();
117
auto
const
fromBuilder = entryFromBuilder.getAccount();
118
119
expectEqualField
(expected, fromSle,
"sfAccount"
);
120
expectEqualField
(expected, fromBuilder,
"sfAccount"
);
121
}
122
123
{
124
auto
const
& expected = ownerNodeValue;
125
126
auto
const
fromSle = entryFromSle.
getOwnerNode
();
127
auto
const
fromBuilder = entryFromBuilder.getOwnerNode();
128
129
expectEqualField
(expected, fromSle,
"sfOwnerNode"
);
130
expectEqualField
(expected, fromBuilder,
"sfOwnerNode"
);
131
}
132
133
{
134
auto
const
& expected = ticketSequenceValue;
135
136
auto
const
fromSle = entryFromSle.
getTicketSequence
();
137
auto
const
fromBuilder = entryFromBuilder.getTicketSequence();
138
139
expectEqualField
(expected, fromSle,
"sfTicketSequence"
);
140
expectEqualField
(expected, fromBuilder,
"sfTicketSequence"
);
141
}
142
143
{
144
auto
const
& expected = previousTxnIDValue;
145
146
auto
const
fromSle = entryFromSle.
getPreviousTxnID
();
147
auto
const
fromBuilder = entryFromBuilder.getPreviousTxnID();
148
149
expectEqualField
(expected, fromSle,
"sfPreviousTxnID"
);
150
expectEqualField
(expected, fromBuilder,
"sfPreviousTxnID"
);
151
}
152
153
{
154
auto
const
& expected = previousTxnLgrSeqValue;
155
156
auto
const
fromSle = entryFromSle.
getPreviousTxnLgrSeq
();
157
auto
const
fromBuilder = entryFromBuilder.getPreviousTxnLgrSeq();
158
159
expectEqualField
(expected, fromSle,
"sfPreviousTxnLgrSeq"
);
160
expectEqualField
(expected, fromBuilder,
"sfPreviousTxnLgrSeq"
);
161
}
162
163
EXPECT_EQ(entryFromSle.
getKey
(), index);
164
EXPECT_EQ(entryFromBuilder.getKey(), index);
165
}
166
167
// 3) Verify wrapper throws when constructed from wrong ledger entry type.
168
TEST
(TicketTests, WrapperThrowsOnWrongEntryType)
169
{
170
UInt256
const
index{3u};
171
172
// Build a valid ledger entry of a different type
173
// Ticket requires: Account, OwnerNode, TicketSequence, PreviousTxnID, PreviousTxnLgrSeq
174
// Check requires: Account, Destination, SendMax, Sequence, OwnerNode, DestinationNode, PreviousTxnID, PreviousTxnLgrSeq
175
CheckBuilder
wrongBuilder{
176
canonical_ACCOUNT
(),
177
canonical_ACCOUNT
(),
178
canonical_AMOUNT
(),
179
canonical_UINT32
(),
180
canonical_UINT64
(),
181
canonical_UINT64
(),
182
canonical_UINT256
(),
183
canonical_UINT32
()};
184
auto
wrongEntry = wrongBuilder.
build
(index);
185
186
EXPECT_THROW(
Ticket
{wrongEntry.getSle()},
std::runtime_error
);
187
}
188
189
// 4) Verify builder throws when constructed from wrong ledger entry type.
190
TEST
(TicketTests, BuilderThrowsOnWrongEntryType)
191
{
192
UInt256
const
index{4u};
193
194
// Build a valid ledger entry of a different type
195
CheckBuilder
wrongBuilder{
196
canonical_ACCOUNT
(),
197
canonical_ACCOUNT
(),
198
canonical_AMOUNT
(),
199
canonical_UINT32
(),
200
canonical_UINT64
(),
201
canonical_UINT64
(),
202
canonical_UINT256
(),
203
canonical_UINT32
()};
204
auto
wrongEntry = wrongBuilder.
build
(index);
205
206
EXPECT_THROW(
TicketBuilder
{wrongEntry.getSle()},
std::runtime_error
);
207
}
208
209
}
xrpl::ledger_entries::CheckBuilder
Builder for Check ledger entries.
Definition
Check.h:241
xrpl::ledger_entries::CheckBuilder::build
Check build(UInt256 const &index)
Build and return the completed Check wrapper.
Definition
Check.h:423
xrpl::ledger_entries::LedgerEntryBase::getKey
UInt256 const & getKey() const
Get the key (index) of this ledger entry.
Definition
LedgerEntryBase.h:70
xrpl::ledger_entries::LedgerEntryBase::validate
bool validate() const
Validate the ledger entry.
Definition
LedgerEntryBase.h:40
xrpl::ledger_entries::LedgerEntryBuilderBase::setLedgerIndex
Derived & setLedgerIndex(UInt256 const &value)
Set the ledger index.
Definition
LedgerEntryBuilderBase.h:62
xrpl::ledger_entries::LedgerEntryBuilderBase::setFlags
Derived & setFlags(uint32_t value)
Set the flags.
Definition
LedgerEntryBuilderBase.h:74
xrpl::ledger_entries::LedgerEntryBuilderBase::validate
bool validate() const
Validate the ledger entry.
Definition
LedgerEntryBuilderBase.h:45
xrpl::ledger_entries::TicketBuilder
Builder for Ticket ledger entries.
Definition
Ticket.h:112
xrpl::ledger_entries::TicketBuilder::build
Ticket build(UInt256 const &index)
Build and return the completed Ticket wrapper.
Definition
Ticket.h:211
xrpl::ledger_entries::Ticket
Ledger Entry: Ticket.
Definition
Ticket.h:28
xrpl::ledger_entries::Ticket::getPreviousTxnLgrSeq
SF_UINT32::type::value_type getPreviousTxnLgrSeq() const
Get sfPreviousTxnLgrSeq (SoeRequired).
Definition
Ticket.h:98
xrpl::ledger_entries::Ticket::getPreviousTxnID
SF_UINT256::type::value_type getPreviousTxnID() const
Get sfPreviousTxnID (SoeRequired).
Definition
Ticket.h:87
xrpl::ledger_entries::Ticket::entryType
static constexpr LedgerEntryType entryType
Definition
Ticket.h:30
xrpl::ledger_entries::Ticket::getAccount
SF_ACCOUNT::type::value_type getAccount() const
Get sfAccount (SoeRequired).
Definition
Ticket.h:54
xrpl::ledger_entries::Ticket::getTicketSequence
SF_UINT32::type::value_type getTicketSequence() const
Get sfTicketSequence (SoeRequired).
Definition
Ticket.h:76
xrpl::ledger_entries::Ticket::getOwnerNode
SF_UINT64::type::value_type getOwnerNode() const
Get sfOwnerNode (SoeRequired).
Definition
Ticket.h:65
std::make_shared
T make_shared(T... args)
xrpl::ledger_entries
Definition
AccountRoot.h:14
xrpl::ledger_entries::TEST
TEST(AccountRootTests, BuilderSettersRoundTrip)
Definition
AccountRootTests.cpp:19
xrpl::canonical_UINT32
UInt32Value canonical_UINT32()
Definition
/libxrpl/protocol_autogen/TestHelpers.h:48
xrpl::canonical_ACCOUNT
AccountValue canonical_ACCOUNT()
Definition
/libxrpl/protocol_autogen/TestHelpers.h:111
xrpl::canonical_UINT256
UInt256Value canonical_UINT256()
Definition
/libxrpl/protocol_autogen/TestHelpers.h:83
xrpl::UInt256
BaseUInt< 256 > UInt256
Definition
base_uint.h:580
xrpl::canonical_AMOUNT
AmountValue canonical_AMOUNT()
Definition
/libxrpl/protocol_autogen/TestHelpers.h:104
xrpl::canonical_UINT64
UInt64Value canonical_UINT64()
Definition
/libxrpl/protocol_autogen/TestHelpers.h:55
xrpl::expectEqualField
void expectEqualField(T const &expected, T const &actual, char const *fieldName)
Definition
/libxrpl/protocol_autogen/TestHelpers.h:178
std::runtime_error
string
Generated by
1.17.0