xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
test
ledger
BookDirs_test.cpp
1
2
#include <test/jtx/Account.h>
3
#include <test/jtx/Env.h>
4
#include <test/jtx/amount.h>
5
#include <test/jtx/offer.h>
6
#include <test/jtx/pay.h>
7
8
#include <xrpl/beast/unit_test/suite.h>
9
#include <xrpl/ledger/BookDirs.h>
10
#include <xrpl/protocol/Book.h>
11
#include <xrpl/protocol/Feature.h>
12
#include <xrpl/protocol/Issue.h>
13
#include <xrpl/protocol/SField.h>
14
15
#include <
iterator
>
16
#include <
optional
>
17
18
namespace
xrpl::test
{
19
20
struct
BookDirs_test
:
public
beast::unit_test::Suite
21
{
22
void
23
testBookdir
(
FeatureBitset
features)
24
{
25
using namespace
jtx
;
26
Env
env(*
this
, features);
27
auto
gw =
Account
(
"gw"
);
28
auto
usd = gw[
"USD"
];
29
env.
fund
(
XRP
(1000000),
"alice"
,
"bob"
,
"gw"
);
30
env.
close
();
31
32
{
33
Book
const
book(
xrpIssue
(), usd, std::nullopt);
34
{
35
auto
d =
BookDirs
(*env.
current
(), book);
36
BEAST_EXPECT(
std::begin
(d) ==
std::end
(d));
37
BEAST_EXPECT(
std::distance
(d.begin(), d.end()) == 0);
38
}
39
{
40
auto
d =
BookDirs
(*env.
current
(),
reversed
(book));
41
BEAST_EXPECT(
std::distance
(d.begin(), d.end()) == 0);
42
}
43
}
44
45
{
46
env(
offer
(
"alice"
,
Account
(
"alice"
)[
"USD"
](50),
XRP
(10)));
47
auto
d =
48
BookDirs
(*env.
current
(),
Book
(
Account
(
"alice"
)[
"USD"
],
xrpIssue
(), std::nullopt));
49
BEAST_EXPECT(
std::distance
(d.begin(), d.end()) == 1);
50
}
51
52
{
53
env(
offer
(
"alice"
, gw[
"CNY"
](50),
XRP
(10)));
54
auto
d =
BookDirs
(*env.
current
(),
Book
(gw[
"CNY"
],
xrpIssue
(), std::nullopt));
55
BEAST_EXPECT(
std::distance
(d.begin(), d.end()) == 1);
56
}
57
58
{
59
env.
trust
(
Account
(
"bob"
)[
"CNY"
](10),
"alice"
);
60
env(
pay
(
"bob"
,
"alice"
,
Account
(
"bob"
)[
"CNY"
](10)));
61
env(
offer
(
"alice"
, usd(50),
Account
(
"bob"
)[
"CNY"
](10)));
62
auto
d =
BookDirs
(*env.
current
(),
Book
(usd,
Account
(
"bob"
)[
"CNY"
], std::nullopt));
63
BEAST_EXPECT(
std::distance
(d.begin(), d.end()) == 1);
64
}
65
66
{
67
auto
aud = gw[
"AUD"
];
68
for
(
auto
i = 1, j = 3; i <= 3; ++i, --j)
69
{
70
for
(
auto
k = 0; k < 80; ++k)
71
env(
offer
(
"alice"
, aud(i),
XRP
(j)));
72
}
73
74
auto
d =
BookDirs
(*env.
current
(),
Book
(aud,
xrpIssue
(), std::nullopt));
75
BEAST_EXPECT(
std::distance
(d.begin(), d.end()) == 240);
76
auto
i = 1, j = 3, k = 0;
77
for
(
auto
const
& e : d)
78
{
79
BEAST_EXPECT(e->getFieldAmount(sfTakerPays) == aud(i));
80
BEAST_EXPECT(e->getFieldAmount(sfTakerGets) ==
XRP
(j));
81
if
(++k % 80 == 0)
82
{
83
++i;
84
--j;
85
}
86
}
87
}
88
}
89
90
void
91
run
()
override
92
{
93
using namespace
jtx
;
94
auto
const
sa =
testableAmendments
();
95
testBookdir
(sa - featurePermissionedDEX);
96
testBookdir
(sa);
97
}
98
};
99
100
BEAST_DEFINE_TESTSUITE
(
BookDirs
, ledger,
xrpl
);
101
102
}
// namespace xrpl::test
std::begin
T begin(T... args)
beast::unit_test::Suite
A testsuite class.
Definition
suite.h:52
xrpl::BookDirs
Definition
BookDirs.h:15
xrpl::Book
Specifies an order book.
Definition
Book.h:28
xrpl::FeatureBitset
Definition
Feature.h:196
xrpl::test::jtx::Env
A transaction testing environment.
Definition
Env.h:161
xrpl::test::jtx::Env::close
bool close(NetClock::time_point closeTime, std::optional< std::chrono::milliseconds > consensusDelay=std::nullopt)
Close and advance the ledger.
Definition
Env.cpp:133
xrpl::test::jtx::Env::fund
void fund(bool setDefaultRipple, STAmount const &amount, Account const &account)
Definition
Env.cpp:323
xrpl::test::jtx::Env::trust
void trust(STAmount const &amount, Account const &account)
Establish trust lines.
Definition
Env.cpp:354
xrpl::test::jtx::Env::current
std::shared_ptr< OpenView const > current() const
Returns the current ledger.
Definition
Env.h:377
std::distance
T distance(T... args)
std::end
T end(T... args)
iterator
xrpl::test::jtx
Definition
Oracle_test.cpp:34
xrpl::test::jtx::pay
json::Value pay(AccountID const &account, AccountID const &to, AnyAmount amount)
Create a payment.
Definition
pay.cpp:14
xrpl::test::jtx::XRP
XrpT const XRP
Converts to XRP Issue or STAmount.
Definition
amount.cpp:92
xrpl::test::jtx::testableAmendments
FeatureBitset testableAmendments()
Definition
Env.h:92
xrpl::test::jtx::offer
json::Value offer(Account const &account, STAmount const &takerPays, STAmount const &takerGets, std::uint32_t flags)
Create an offer.
Definition
offer.cpp:14
xrpl::test
Definition
STLedgerEntry.h:21
xrpl::test::BEAST_DEFINE_TESTSUITE
BEAST_DEFINE_TESTSUITE(AMMClawback, app, xrpl)
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::xrpIssue
Issue const & xrpIssue()
Returns an asset specifier that represents XRP.
Definition
Issue.h:108
xrpl::reversed
Book reversed(Book const &book)
Definition
Book.cpp:30
xrpl::FeePayerType::Account
@ Account
Definition
Transactor.h:145
optional
xrpl::test::BookDirs_test
Definition
BookDirs_test.cpp:21
xrpl::test::BookDirs_test::testBookdir
void testBookdir(FeatureBitset features)
Definition
BookDirs_test.cpp:23
xrpl::test::BookDirs_test::run
void run() override
Runs the suite.
Definition
BookDirs_test.cpp:91
Generated by
1.17.0