Refactoring 1

This commit is contained in:
Ed Hennis
2025-05-16 15:32:31 +01:00
committed by Bronek Kozicki
parent e514de76ed
commit 4e50087612
56 changed files with 1582 additions and 531 deletions

View File

@@ -199,6 +199,26 @@ Env::balance(Account const& account, Issue const& issue) const
return {amount, lookup(issue.account).name()};
}
PrettyAmount
Env::balance(Account const& account, MPTIssue const& mptIssue) const
{
auto const sle = le(keylet::mptoken(mptIssue.getMptID(), account));
if (!sle)
{
return {STAmount(mptIssue, 0), account.name()};
}
STAmount const amount{mptIssue, sle->getFieldU64(sfMPTAmount)};
return {amount, lookup(mptIssue.getIssuer()).name()};
}
PrettyAmount
Env::balance(Account const& account, Asset const& asset) const
{
return std::visit(
[&](auto const& issue) { return balance(account, issue); },
asset.value());
}
std::uint32_t
Env::ownerCount(Account const& account) const
{

View File

@@ -136,10 +136,30 @@ expectLine(
return false;
}
[[nodiscard]] bool
expectLine(Env& env, AccountID const& account, None const&, Issue const& issue)
{
return !env.le(keylet::line(account, issue));
}
[[nodiscard]] bool
expectLine(
Env& env,
AccountID const& account,
None const&,
MPTIssue const& mptIssue)
{
return !env.le(keylet::mptoken(mptIssue.getMptID(), account));
}
[[nodiscard]] bool
expectLine(Env& env, AccountID const& account, None const& value)
{
return !env.le(keylet::line(account, value.issue));
return std::visit(
[&](auto const& issue) {
return expectLine(env, account, value, issue);
},
value.asset.value());
}
[[nodiscard]] bool

View File

@@ -24,38 +24,73 @@ namespace test {
namespace jtx {
void
balance::operator()(Env& env) const
doBalance(
Env& env,
AccountID const& account,
bool none,
STAmount const& value,
Issue const& issue)
{
if (isXRP(value_.issue()))
if (isXRP(issue))
{
auto const sle = env.le(account_);
if (none_)
auto const sle = env.le(keylet::account(account));
if (none)
{
env.test.expect(!sle);
}
else if (env.test.expect(sle))
{
env.test.expect(sle->getFieldAmount(sfBalance) == value_);
env.test.expect(sle->getFieldAmount(sfBalance) == value);
}
}
else
{
auto const sle = env.le(keylet::line(account_.id(), value_.issue()));
if (none_)
auto const sle = env.le(keylet::line(account, issue));
if (none)
{
env.test.expect(!sle);
}
else if (env.test.expect(sle))
{
auto amount = sle->getFieldAmount(sfBalance);
amount.setIssuer(value_.issue().account);
if (account_.id() > value_.issue().account)
amount.setIssuer(issue.account);
if (account > issue.account)
amount.negate();
env.test.expect(amount == value_);
env.test.expect(amount == value);
}
}
}
void
doBalance(
Env& env,
AccountID const& account,
bool none,
STAmount const& value,
MPTIssue const& mptIssue)
{
auto const sle = env.le(keylet::mptoken(mptIssue.getMptID(), account));
if (none)
{
env.test.expect(!sle);
}
else if (env.test.expect(sle))
{
STAmount const amount{mptIssue, sle->getFieldU64(sfMPTAmount)};
env.test.expect(amount == value);
}
}
void
balance::operator()(Env& env) const
{
return std::visit(
[&](auto const& issue) {
doBalance(env, account_.id(), none_, value_, issue);
},
value_.asset().value());
}
} // namespace jtx
} // namespace test
} // namespace ripple

View File

@@ -26,13 +26,15 @@ namespace test {
namespace jtx {
void
fee::operator()(Env&, JTx& jt) const
fee::operator()(Env& env, JTx& jt) const
{
if (!manual_)
return;
jt.fill_fee = false;
if (increment_)
jt[sfFee] = STAmount(env.current()->fees().increment).getJson();
if (amount_)
jt[jss::Fee] = amount_->getJson(JsonOptions::none);
jt[sfFee] = amount_->getJson(JsonOptions::none);
}
} // namespace jtx

View File

@@ -20,9 +20,6 @@
#include <test/jtx/owners.h>
namespace ripple {
namespace test {
namespace jtx {
namespace detail {
std::uint32_t
@@ -39,7 +36,7 @@ owned_count_of(ReadView const& view, AccountID const& id, LedgerEntryType type)
void
owned_count_helper(
Env& env,
test::jtx::Env& env,
AccountID const& id,
LedgerEntryType type,
std::uint32_t value)
@@ -49,6 +46,9 @@ owned_count_helper(
} // namespace detail
namespace test {
namespace jtx {
void
owners::operator()(Env& env) const
{