rippled
Loading...
Searching...
No Matches
balance.cpp
1#include <test/jtx/balance.h>
2
3namespace xrpl {
4namespace test {
5namespace jtx {
6
7void
8doBalance(Env& env, AccountID const& account, bool none, STAmount const& value, Issue const& issue)
9{
10 if (isXRP(issue))
11 {
12 auto const sle = env.le(keylet::account(account));
13 if (none)
14 {
15 env.test.expect(!sle);
16 }
17 else if (env.test.expect(sle))
18 {
19 env.test.expect(sle->getFieldAmount(sfBalance) == value);
20 }
21 }
22 else
23 {
24 auto const sle = env.le(keylet::line(account, issue));
25 if (none)
26 {
27 env.test.expect(!sle);
28 }
29 else if (env.test.expect(sle))
30 {
31 auto amount = sle->getFieldAmount(sfBalance);
32 amount.setIssuer(issue.account);
33 if (account > issue.account)
34 amount.negate();
35 env.test.expect(amount == value);
36 }
37 }
38}
39
40void
41doBalance(Env& env, AccountID const& account, bool none, STAmount const& value, MPTIssue const& mptIssue)
42{
43 auto const sle = env.le(keylet::mptoken(mptIssue.getMptID(), account));
44 if (none)
45 {
46 env.test.expect(!sle);
47 }
48 else if (env.test.expect(sle))
49 {
50 STAmount const amount{mptIssue, sle->getFieldU64(sfMPTAmount)};
51 env.test.expect(amount == value);
52 }
53}
54
55void
57{
58 return std::visit(
59 [&](auto const& issue) { doBalance(env, account_.id(), none_, value_, issue); }, value_.asset().value());
60}
61
62} // namespace jtx
63} // namespace test
64} // namespace xrpl
bool expect(Condition const &shouldBeTrue)
Evaluate a test condition.
Definition suite.h:222
constexpr value_type const & value() const
Definition Asset.h:155
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:442
AccountID id() const
Returns the Account ID.
Definition Account.h:88
A transaction testing environment.
Definition Env.h:98
std::shared_ptr< SLE const > le(Account const &account) const
Return an account root.
Definition Env.cpp:248
beast::unit_test::suite & test
Definition Env.h:100
void operator()(Env &) const
Definition balance.cpp:56
Account const account_
Definition balance.h:23
STAmount const value_
Definition balance.h:24
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:214
Keylet mptoken(MPTID const &issuanceID, AccountID const &holder) noexcept
Definition Indexes.cpp:474
Keylet account(AccountID const &id) noexcept
AccountID root.
Definition Indexes.cpp:160
static none_t const none
Definition tags.h:15
auto const amount
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)