rippled
Loading...
Searching...
No Matches
balance.cpp
1#include <test/jtx/balance.h>
2
3namespace ripple {
4namespace test {
5namespace jtx {
6
7void
9 Env& env,
10 AccountID const& account,
11 bool none,
12 STAmount const& value,
13 Issue const& issue)
14{
15 if (isXRP(issue))
16 {
17 auto const sle = env.le(keylet::account(account));
18 if (none)
19 {
20 env.test.expect(!sle);
21 }
22 else if (env.test.expect(sle))
23 {
24 env.test.expect(sle->getFieldAmount(sfBalance) == value);
25 }
26 }
27 else
28 {
29 auto const sle = env.le(keylet::line(account, issue));
30 if (none)
31 {
32 env.test.expect(!sle);
33 }
34 else if (env.test.expect(sle))
35 {
36 auto amount = sle->getFieldAmount(sfBalance);
37 amount.setIssuer(issue.account);
38 if (account > issue.account)
39 amount.negate();
40 env.test.expect(amount == value);
41 }
42 }
43}
44
45void
47 Env& env,
48 AccountID const& account,
49 bool none,
50 STAmount const& value,
51 MPTIssue const& mptIssue)
52{
53 auto const sle = env.le(keylet::mptoken(mptIssue.getMptID(), account));
54 if (none)
55 {
56 env.test.expect(!sle);
57 }
58 else if (env.test.expect(sle))
59 {
60 STAmount const amount{mptIssue, sle->getFieldU64(sfMPTAmount)};
61 env.test.expect(amount == value);
62 }
63}
64
65void
67{
68 return std::visit(
69 [&](auto const& issue) {
70 doBalance(env, account_.id(), none_, value_, issue);
71 },
72 value_.asset().value());
73}
74
75} // namespace jtx
76} // namespace test
77} // namespace ripple
bool expect(Condition const &shouldBeTrue)
Evaluate a test condition.
Definition suite.h:226
constexpr value_type const & value() const
Definition Asset.h:137
A currency issued by an account.
Definition Issue.h:14
AccountID account
Definition Issue.h:17
constexpr MPTID const & getMptID() const
Definition MPTIssue.h:27
Asset const & asset() const
Definition STAmount.h:464
AccountID id() const
Returns the Account ID.
Definition Account.h:92
A transaction testing environment.
Definition Env.h:102
beast::unit_test::suite & test
Definition Env.h:104
std::shared_ptr< SLE const > le(Account const &account) const
Return an account root.
Definition Env.cpp:259
void operator()(Env &) const
Definition balance.cpp:66
Account const account_
Definition balance.h:23
STAmount const value_
Definition balance.h:24
Keylet mptoken(MPTID const &issuanceID, AccountID const &holder) noexcept
Definition Indexes.cpp:521
Keylet line(AccountID const &id0, AccountID const &id1, Currency const &currency) noexcept
The index of a trust line for a given currency.
Definition Indexes.cpp:225
Keylet account(AccountID const &id) noexcept
AccountID root.
Definition Indexes.cpp:165
static none_t const none
Definition tags.h:15
void doBalance(Env &env, AccountID const &account, bool none, STAmount const &value, Issue const &issue)
Definition balance.cpp:8
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
bool isXRP(AccountID const &c)
Definition AccountID.h:71
T visit(T... args)