mirror of
https://github.com/XRPLF/rippled.git
synced 2026-06-05 01:37:00 +00:00
chore: Set ColumnLimit to 120 in clang-format (#6288)
This change updates the ColumnLimit from 80 to 120, and applies clang-format to reformat the code.
This commit is contained in:
@@ -44,14 +44,8 @@ private:
|
||||
// Insufficient reserve if the data series extends to greater than 5
|
||||
{
|
||||
Env env(*this);
|
||||
env.fund(
|
||||
env.current()->fees().accountReserve(1) +
|
||||
env.current()->fees().base * 2,
|
||||
owner);
|
||||
Oracle oracle(
|
||||
env,
|
||||
{.owner = owner,
|
||||
.fee = static_cast<int>(env.current()->fees().base.drops())});
|
||||
env.fund(env.current()->fees().accountReserve(1) + env.current()->fees().base * 2, owner);
|
||||
Oracle oracle(env, {.owner = owner, .fee = static_cast<int>(env.current()->fees().base.drops())});
|
||||
BEAST_EXPECT(oracle.exists());
|
||||
oracle.set(UpdateArg{
|
||||
.series =
|
||||
@@ -68,40 +62,31 @@ private:
|
||||
|
||||
{
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(XRP(1'000), owner);
|
||||
Oracle oracle(env, {.owner = owner, .fee = baseFee}, false);
|
||||
|
||||
// Invalid flag
|
||||
oracle.set(CreateArg{
|
||||
.flags = tfSellNFToken,
|
||||
.fee = baseFee,
|
||||
.err = ter(temINVALID_FLAG)});
|
||||
oracle.set(CreateArg{.flags = tfSellNFToken, .fee = baseFee, .err = ter(temINVALID_FLAG)});
|
||||
|
||||
// Duplicate token pair
|
||||
oracle.set(CreateArg{
|
||||
.series = {{"XRP", "USD", 740, 1}, {"XRP", "USD", 750, 1}},
|
||||
.fee = baseFee,
|
||||
.err = ter(temMALFORMED)});
|
||||
.series = {{"XRP", "USD", 740, 1}, {"XRP", "USD", 750, 1}}, .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
|
||||
// Price is not included
|
||||
oracle.set(CreateArg{
|
||||
.series =
|
||||
{{"XRP", "USD", 740, 1}, {"XRP", "EUR", std::nullopt, 1}},
|
||||
.series = {{"XRP", "USD", 740, 1}, {"XRP", "EUR", std::nullopt, 1}},
|
||||
.fee = baseFee,
|
||||
.err = ter(temMALFORMED)});
|
||||
|
||||
// Token pair is in update and delete
|
||||
oracle.set(CreateArg{
|
||||
.series =
|
||||
{{"XRP", "USD", 740, 1}, {"XRP", "USD", std::nullopt, 1}},
|
||||
.series = {{"XRP", "USD", 740, 1}, {"XRP", "USD", std::nullopt, 1}},
|
||||
.fee = baseFee,
|
||||
.err = ter(temMALFORMED)});
|
||||
// Token pair is in add and delete
|
||||
oracle.set(CreateArg{
|
||||
.series =
|
||||
{{"XRP", "EUR", 740, 1}, {"XRP", "EUR", std::nullopt, 1}},
|
||||
.series = {{"XRP", "EUR", 740, 1}, {"XRP", "EUR", std::nullopt, 1}},
|
||||
.fee = baseFee,
|
||||
.err = ter(temMALFORMED)});
|
||||
|
||||
@@ -121,23 +106,16 @@ private:
|
||||
{"XRP", "U11", 740, 1}},
|
||||
.fee = baseFee,
|
||||
.err = ter(temARRAY_TOO_LARGE)});
|
||||
oracle.set(CreateArg{
|
||||
.series = {}, .fee = baseFee, .err = ter(temARRAY_EMPTY)});
|
||||
oracle.set(CreateArg{.series = {}, .fee = baseFee, .err = ter(temARRAY_EMPTY)});
|
||||
}
|
||||
|
||||
// Array of token pair exceeds 10 after update
|
||||
{
|
||||
Env env{*this};
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(XRP(1'000), owner);
|
||||
|
||||
Oracle oracle(
|
||||
env,
|
||||
CreateArg{
|
||||
.owner = owner,
|
||||
.series = {{{"XRP", "USD", 740, 1}}},
|
||||
.fee = baseFee});
|
||||
Oracle oracle(env, CreateArg{.owner = owner, .series = {{{"XRP", "USD", 740, 1}}}, .fee = baseFee});
|
||||
oracle.set(UpdateArg{
|
||||
.series =
|
||||
{
|
||||
@@ -158,17 +136,13 @@ private:
|
||||
|
||||
{
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(XRP(1'000), owner);
|
||||
Oracle oracle(env, {.owner = owner, .fee = baseFee}, false);
|
||||
|
||||
// Asset class or provider not included on create
|
||||
oracle.set(CreateArg{
|
||||
.assetClass = std::nullopt,
|
||||
.provider = "provider",
|
||||
.fee = baseFee,
|
||||
.err = ter(temMALFORMED)});
|
||||
.assetClass = std::nullopt, .provider = "provider", .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
oracle.set(CreateArg{
|
||||
.assetClass = "currency",
|
||||
.provider = std::nullopt,
|
||||
@@ -178,14 +152,10 @@ private:
|
||||
|
||||
// Asset class or provider are included on update
|
||||
// and don't match the current values
|
||||
oracle.set(CreateArg{
|
||||
.fee = static_cast<int>(env.current()->fees().base.drops())});
|
||||
oracle.set(CreateArg{.fee = static_cast<int>(env.current()->fees().base.drops())});
|
||||
BEAST_EXPECT(oracle.exists());
|
||||
oracle.set(UpdateArg{
|
||||
.series = {{"XRP", "USD", 740, 1}},
|
||||
.provider = "provider1",
|
||||
.fee = baseFee,
|
||||
.err = ter(temMALFORMED)});
|
||||
.series = {{"XRP", "USD", 740, 1}}, .provider = "provider1", .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
oracle.set(UpdateArg{
|
||||
.series = {{"XRP", "USD", 740, 1}},
|
||||
.assetClass = "currency1",
|
||||
@@ -195,68 +165,49 @@ private:
|
||||
|
||||
{
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(XRP(1'000), owner);
|
||||
Oracle oracle(env, {.owner = owner, .fee = baseFee}, false);
|
||||
|
||||
// Fields too long
|
||||
// Asset class
|
||||
std::string assetClass(17, '0');
|
||||
oracle.set(CreateArg{
|
||||
.assetClass = assetClass,
|
||||
.fee = baseFee,
|
||||
.err = ter(temMALFORMED)});
|
||||
oracle.set(CreateArg{.assetClass = assetClass, .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
// provider
|
||||
std::string const large(257, '0');
|
||||
oracle.set(CreateArg{
|
||||
.provider = large, .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
oracle.set(CreateArg{.provider = large, .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
// URI
|
||||
oracle.set(CreateArg{
|
||||
.uri = large, .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
oracle.set(CreateArg{.uri = large, .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
// Empty field
|
||||
// Asset class
|
||||
oracle.set(CreateArg{
|
||||
.assetClass = "", .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
oracle.set(CreateArg{.assetClass = "", .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
// provider
|
||||
oracle.set(CreateArg{
|
||||
.provider = "", .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
oracle.set(CreateArg{.provider = "", .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
// URI
|
||||
oracle.set(
|
||||
CreateArg{.uri = "", .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
oracle.set(CreateArg{.uri = "", .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
}
|
||||
|
||||
{
|
||||
// Different owner creates a new object and fails because
|
||||
// of missing fields currency/provider
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
Account const some("some");
|
||||
env.fund(XRP(1'000), owner);
|
||||
env.fund(XRP(1'000), some);
|
||||
Oracle oracle(env, {.owner = owner, .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.exists());
|
||||
oracle.set(UpdateArg{
|
||||
.owner = some,
|
||||
.series = {{"XRP", "USD", 740, 1}},
|
||||
.fee = baseFee,
|
||||
.err = ter(temMALFORMED)});
|
||||
oracle.set(
|
||||
UpdateArg{.owner = some, .series = {{"XRP", "USD", 740, 1}}, .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
}
|
||||
|
||||
{
|
||||
// Invalid update time
|
||||
using namespace std::chrono;
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
auto closeTime = [&]() {
|
||||
return duration_cast<seconds>(
|
||||
env.current()
|
||||
->header()
|
||||
.closeTime.time_since_epoch() -
|
||||
10'000s)
|
||||
.count();
|
||||
return duration_cast<seconds>(env.current()->header().closeTime.time_since_epoch() - 10'000s).count();
|
||||
};
|
||||
env.fund(XRP(1'000), owner);
|
||||
Oracle oracle(env, {.owner = owner, .fee = baseFee});
|
||||
@@ -274,10 +225,8 @@ private:
|
||||
.lastUpdateTime = static_cast<std::uint32_t>(closeTime() + 311),
|
||||
.fee = baseFee,
|
||||
.err = ter(tecINVALID_UPDATE_TIME)});
|
||||
oracle.set(
|
||||
UpdateArg{.series = {{"XRP", "USD", 740, 1}}, .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.expectLastUpdateTime(
|
||||
static_cast<std::uint32_t>(testStartTime.count() + 450)));
|
||||
oracle.set(UpdateArg{.series = {{"XRP", "USD", 740, 1}}, .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.expectLastUpdateTime(static_cast<std::uint32_t>(testStartTime.count() + 450)));
|
||||
// Less than the previous lastUpdateTime
|
||||
oracle.set(UpdateArg{
|
||||
.series = {{"XRP", "USD", 740, 1}},
|
||||
@@ -295,8 +244,7 @@ private:
|
||||
{
|
||||
// delete token pair that doesn't exist
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(XRP(1'000), owner);
|
||||
Oracle oracle(env, {.owner = owner, .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.exists());
|
||||
@@ -306,30 +254,22 @@ private:
|
||||
.err = ter(tecTOKEN_PAIR_NOT_FOUND)});
|
||||
// delete all token pairs
|
||||
oracle.set(UpdateArg{
|
||||
.series = {{"XRP", "USD", std::nullopt, std::nullopt}},
|
||||
.fee = baseFee,
|
||||
.err = ter(tecARRAY_EMPTY)});
|
||||
.series = {{"XRP", "USD", std::nullopt, std::nullopt}}, .fee = baseFee, .err = ter(tecARRAY_EMPTY)});
|
||||
}
|
||||
|
||||
{
|
||||
// same BaseAsset and QuoteAsset
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(XRP(1'000), owner);
|
||||
Oracle oracle(
|
||||
env,
|
||||
{.owner = owner,
|
||||
.series = {{"USD", "USD", 740, 1}},
|
||||
.fee = baseFee,
|
||||
.err = ter(temMALFORMED)});
|
||||
env, {.owner = owner, .series = {{"USD", "USD", 740, 1}}, .fee = baseFee, .err = ter(temMALFORMED)});
|
||||
}
|
||||
|
||||
{
|
||||
// Scale is greater than maxPriceScale
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(XRP(1'000), owner);
|
||||
Oracle oracle(
|
||||
env,
|
||||
@@ -342,14 +282,11 @@ private:
|
||||
{
|
||||
// Updating token pair to add and delete
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(XRP(1'000), owner);
|
||||
Oracle oracle(env, {.owner = owner, .fee = baseFee});
|
||||
oracle.set(UpdateArg{
|
||||
.series =
|
||||
{{"XRP", "EUR", std::nullopt, std::nullopt},
|
||||
{"XRP", "EUR", 740, 1}},
|
||||
.series = {{"XRP", "EUR", std::nullopt, std::nullopt}, {"XRP", "EUR", 740, 1}},
|
||||
.fee = baseFee,
|
||||
.err = ter(temMALFORMED)});
|
||||
// Delete token pair that doesn't exist in this oracle
|
||||
@@ -369,14 +306,9 @@ private:
|
||||
// Bad fee
|
||||
Env env(*this);
|
||||
env.fund(XRP(1'000), owner);
|
||||
Oracle oracle(
|
||||
env, {.owner = owner, .fee = -1, .err = ter(temBAD_FEE)});
|
||||
Oracle oracle1(
|
||||
env,
|
||||
{.owner = owner,
|
||||
.fee = static_cast<int>(env.current()->fees().base.drops())});
|
||||
oracle.set(
|
||||
UpdateArg{.owner = owner, .fee = -1, .err = ter(temBAD_FEE)});
|
||||
Oracle oracle(env, {.owner = owner, .fee = -1, .err = ter(temBAD_FEE)});
|
||||
Oracle oracle1(env, {.owner = owner, .fee = static_cast<int>(env.current()->fees().base.drops())});
|
||||
oracle.set(UpdateArg{.owner = owner, .fee = -1, .err = ter(temBAD_FEE)});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -388,21 +320,17 @@ private:
|
||||
Account const owner("owner");
|
||||
|
||||
auto test = [&](Env& env, DataSeries const& series, std::uint16_t adj) {
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(XRP(1'000), owner);
|
||||
auto const count = ownerCount(env, owner);
|
||||
Oracle oracle(
|
||||
env, {.owner = owner, .series = series, .fee = baseFee});
|
||||
Oracle oracle(env, {.owner = owner, .series = series, .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.exists());
|
||||
BEAST_EXPECT(ownerCount(env, owner) == (count + adj));
|
||||
auto const entry = oracle.ledgerEntry();
|
||||
BEAST_EXPECT(entry[jss::node][jss::Owner] == owner.human());
|
||||
if (features[fixIncludeKeyletFields])
|
||||
{
|
||||
BEAST_EXPECT(
|
||||
entry[jss::node][jss::OracleDocumentID] ==
|
||||
oracle.documentID());
|
||||
BEAST_EXPECT(entry[jss::node][jss::OracleDocumentID] == oracle.documentID());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -434,17 +362,13 @@ private:
|
||||
{
|
||||
// Different owner creates a new object
|
||||
Env env(*this, features);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
Account const some("some");
|
||||
env.fund(XRP(1'000), owner);
|
||||
env.fund(XRP(1'000), some);
|
||||
Oracle oracle(env, {.owner = owner, .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.exists());
|
||||
oracle.set(CreateArg{
|
||||
.owner = some,
|
||||
.series = {{"912810RR9", "USD", 740, 1}},
|
||||
.fee = baseFee});
|
||||
oracle.set(CreateArg{.owner = some, .series = {{"912810RR9", "USD", 740, 1}}, .fee = baseFee});
|
||||
BEAST_EXPECT(Oracle::exists(env, some, oracle.documentID()));
|
||||
}
|
||||
}
|
||||
@@ -456,8 +380,7 @@ private:
|
||||
|
||||
using namespace jtx;
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
Account const owner("owner");
|
||||
env.fund(XRP(1'000), owner);
|
||||
Oracle oracle(env, {.owner = owner, .fee = baseFee});
|
||||
@@ -467,28 +390,19 @@ private:
|
||||
// Invalid account
|
||||
Account const bad("bad");
|
||||
env.memoize(bad);
|
||||
oracle.remove(
|
||||
{.owner = bad,
|
||||
.seq = seq(1),
|
||||
.fee = baseFee,
|
||||
.err = ter(terNO_ACCOUNT)});
|
||||
oracle.remove({.owner = bad, .seq = seq(1), .fee = baseFee, .err = ter(terNO_ACCOUNT)});
|
||||
}
|
||||
|
||||
// Invalid DocumentID
|
||||
oracle.remove(
|
||||
{.documentID = 2, .fee = baseFee, .err = ter(tecNO_ENTRY)});
|
||||
oracle.remove({.documentID = 2, .fee = baseFee, .err = ter(tecNO_ENTRY)});
|
||||
|
||||
// Invalid owner
|
||||
Account const invalid("invalid");
|
||||
env.fund(XRP(1'000), invalid);
|
||||
oracle.remove(
|
||||
{.owner = invalid, .fee = baseFee, .err = ter(tecNO_ENTRY)});
|
||||
oracle.remove({.owner = invalid, .fee = baseFee, .err = ter(tecNO_ENTRY)});
|
||||
|
||||
// Invalid flags
|
||||
oracle.remove(
|
||||
{.flags = tfSellNFToken,
|
||||
.fee = baseFee,
|
||||
.err = ter(temINVALID_FLAG)});
|
||||
oracle.remove({.flags = tfSellNFToken, .fee = baseFee, .err = ter(temINVALID_FLAG)});
|
||||
|
||||
// Bad fee
|
||||
oracle.remove({.fee = -1, .err = ter(temBAD_FEE)});
|
||||
@@ -502,11 +416,9 @@ private:
|
||||
Account const owner("owner");
|
||||
|
||||
auto test = [&](Env& env, DataSeries const& series, std::uint16_t adj) {
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(XRP(1'000), owner);
|
||||
Oracle oracle(
|
||||
env, {.owner = owner, .series = series, .fee = baseFee});
|
||||
Oracle oracle(env, {.owner = owner, .series = series, .fee = baseFee});
|
||||
auto const count = ownerCount(env, owner);
|
||||
BEAST_EXPECT(oracle.exists());
|
||||
oracle.remove({.fee = baseFee});
|
||||
@@ -539,24 +451,14 @@ private:
|
||||
{
|
||||
// deleting the account deletes the oracles
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
|
||||
auto const alice = Account("alice");
|
||||
auto const acctDelFee{drops(env.current()->fees().increment)};
|
||||
env.fund(XRP(1'000), owner);
|
||||
env.fund(XRP(1'000), alice);
|
||||
Oracle oracle(
|
||||
env,
|
||||
{.owner = owner,
|
||||
.series = {{"XRP", "USD", 740, 1}},
|
||||
.fee = baseFee});
|
||||
Oracle oracle1(
|
||||
env,
|
||||
{.owner = owner,
|
||||
.documentID = 2,
|
||||
.series = {{"XRP", "EUR", 740, 1}},
|
||||
.fee = baseFee});
|
||||
Oracle oracle(env, {.owner = owner, .series = {{"XRP", "USD", 740, 1}}, .fee = baseFee});
|
||||
Oracle oracle1(env, {.owner = owner, .documentID = 2, .series = {{"XRP", "EUR", 740, 1}}, .fee = baseFee});
|
||||
BEAST_EXPECT(ownerCount(env, owner) == 2);
|
||||
BEAST_EXPECT(oracle.exists());
|
||||
BEAST_EXPECT(oracle1.exists());
|
||||
@@ -575,8 +477,7 @@ private:
|
||||
jvParams[field] = value;
|
||||
jvParams[jss::binary] = false;
|
||||
jvParams[jss::type] = jss::oracle;
|
||||
Json::Value jrr =
|
||||
env.rpc("json", "ledger_data", to_string(jvParams));
|
||||
Json::Value jrr = env.rpc("json", "ledger_data", to_string(jvParams));
|
||||
BEAST_EXPECT(jrr[jss::result][jss::state].size() == 2);
|
||||
};
|
||||
verifyLedgerData(jss::ledger_index, index);
|
||||
@@ -593,16 +494,14 @@ private:
|
||||
|
||||
{
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(XRP(1'000), owner);
|
||||
auto count = ownerCount(env, owner);
|
||||
Oracle oracle(env, {.owner = owner, .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.exists());
|
||||
|
||||
// update existing pair
|
||||
oracle.set(
|
||||
UpdateArg{.series = {{"XRP", "USD", 740, 2}}, .fee = baseFee});
|
||||
oracle.set(UpdateArg{.series = {{"XRP", "USD", 740, 2}}, .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.expectPrice({{"XRP", "USD", 740, 2}}));
|
||||
// owner count is increased by 1 since the oracle object is added
|
||||
// with one token pair
|
||||
@@ -610,19 +509,14 @@ private:
|
||||
BEAST_EXPECT(ownerCount(env, owner) == count);
|
||||
|
||||
// add new pairs, not-included pair is reset
|
||||
oracle.set(
|
||||
UpdateArg{.series = {{"XRP", "EUR", 700, 2}}, .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.expectPrice(
|
||||
{{"XRP", "USD", 0, 0}, {"XRP", "EUR", 700, 2}}));
|
||||
oracle.set(UpdateArg{.series = {{"XRP", "EUR", 700, 2}}, .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.expectPrice({{"XRP", "USD", 0, 0}, {"XRP", "EUR", 700, 2}}));
|
||||
// owner count is not changed since the number of pairs is 2
|
||||
BEAST_EXPECT(ownerCount(env, owner) == count);
|
||||
|
||||
// update both pairs
|
||||
oracle.set(UpdateArg{
|
||||
.series = {{"XRP", "USD", 741, 2}, {"XRP", "EUR", 710, 2}},
|
||||
.fee = baseFee});
|
||||
BEAST_EXPECT(oracle.expectPrice(
|
||||
{{"XRP", "USD", 741, 2}, {"XRP", "EUR", 710, 2}}));
|
||||
oracle.set(UpdateArg{.series = {{"XRP", "USD", 741, 2}, {"XRP", "EUR", 710, 2}}, .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.expectPrice({{"XRP", "USD", 741, 2}, {"XRP", "EUR", 710, 2}}));
|
||||
// owner count is not changed since the number of pairs is 2
|
||||
BEAST_EXPECT(ownerCount(env, owner) == count);
|
||||
|
||||
@@ -640,9 +534,7 @@ private:
|
||||
BEAST_EXPECT(ownerCount(env, owner) == count);
|
||||
|
||||
// update two pairs and delete four
|
||||
oracle.set(UpdateArg{
|
||||
.series = {{"BTC", "USD", std::nullopt, std::nullopt}},
|
||||
.fee = baseFee});
|
||||
oracle.set(UpdateArg{.series = {{"BTC", "USD", std::nullopt, std::nullopt}}, .fee = baseFee});
|
||||
oracle.set(UpdateArg{
|
||||
.series =
|
||||
{{"XRP", "USD", 742, 2},
|
||||
@@ -651,8 +543,7 @@ private:
|
||||
{"YAN", "EUR", std::nullopt, std::nullopt},
|
||||
{"CAN", "EUR", std::nullopt, std::nullopt}},
|
||||
.fee = baseFee});
|
||||
BEAST_EXPECT(oracle.expectPrice(
|
||||
{{"XRP", "USD", 742, 2}, {"XRP", "EUR", 711, 2}}));
|
||||
BEAST_EXPECT(oracle.expectPrice({{"XRP", "USD", 742, 2}, {"XRP", "EUR", 711, 2}}));
|
||||
// owner count is decreased by 1 since the number of pairs is 2
|
||||
count -= 1;
|
||||
BEAST_EXPECT(ownerCount(env, owner) == count);
|
||||
@@ -661,57 +552,37 @@ private:
|
||||
// Min reserve to create and update
|
||||
{
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(
|
||||
env.current()->fees().accountReserve(1) +
|
||||
env.current()->fees().base * 2,
|
||||
owner);
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
env.fund(env.current()->fees().accountReserve(1) + env.current()->fees().base * 2, owner);
|
||||
Oracle oracle(env, {.owner = owner, .fee = baseFee});
|
||||
oracle.set(
|
||||
UpdateArg{.series = {{"XRP", "USD", 742, 2}}, .fee = baseFee});
|
||||
oracle.set(UpdateArg{.series = {{"XRP", "USD", 742, 2}}, .fee = baseFee});
|
||||
}
|
||||
|
||||
for (bool const withFixOrder : {false, true})
|
||||
{
|
||||
// Should be same order as creation
|
||||
Env env(
|
||||
*this,
|
||||
withFixOrder ? testable_amendments()
|
||||
: testable_amendments() - fixPriceOracleOrder);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
Env env(*this, withFixOrder ? testable_amendments() : testable_amendments() - fixPriceOracleOrder);
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
|
||||
auto test = [&](Env& env, DataSeries const& series) {
|
||||
env.fund(XRP(1'000), owner);
|
||||
Oracle oracle(
|
||||
env, {.owner = owner, .series = series, .fee = baseFee});
|
||||
Oracle oracle(env, {.owner = owner, .series = series, .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.exists());
|
||||
auto sle = env.le(keylet::oracle(owner, oracle.documentID()));
|
||||
BEAST_EXPECT(
|
||||
sle->getFieldArray(sfPriceDataSeries).size() ==
|
||||
series.size());
|
||||
BEAST_EXPECT(sle->getFieldArray(sfPriceDataSeries).size() == series.size());
|
||||
|
||||
auto const beforeQuoteAssetName1 =
|
||||
sle->getFieldArray(sfPriceDataSeries)[0]
|
||||
.getFieldCurrency(sfQuoteAsset)
|
||||
.getText();
|
||||
sle->getFieldArray(sfPriceDataSeries)[0].getFieldCurrency(sfQuoteAsset).getText();
|
||||
auto const beforeQuoteAssetName2 =
|
||||
sle->getFieldArray(sfPriceDataSeries)[1]
|
||||
.getFieldCurrency(sfQuoteAsset)
|
||||
.getText();
|
||||
sle->getFieldArray(sfPriceDataSeries)[1].getFieldCurrency(sfQuoteAsset).getText();
|
||||
|
||||
oracle.set(UpdateArg{.series = series, .fee = baseFee});
|
||||
sle = env.le(keylet::oracle(owner, oracle.documentID()));
|
||||
|
||||
auto const afterQuoteAssetName1 =
|
||||
sle->getFieldArray(sfPriceDataSeries)[0]
|
||||
.getFieldCurrency(sfQuoteAsset)
|
||||
.getText();
|
||||
sle->getFieldArray(sfPriceDataSeries)[0].getFieldCurrency(sfQuoteAsset).getText();
|
||||
auto const afterQuoteAssetName2 =
|
||||
sle->getFieldArray(sfPriceDataSeries)[1]
|
||||
.getFieldCurrency(sfQuoteAsset)
|
||||
.getText();
|
||||
sle->getFieldArray(sfPriceDataSeries)[1].getFieldCurrency(sfQuoteAsset).getText();
|
||||
|
||||
if (env.current()->rules().enabled(fixPriceOracleOrder))
|
||||
{
|
||||
@@ -736,8 +607,7 @@ private:
|
||||
Oracle::setFee(100'000);
|
||||
|
||||
Env env(*this);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
|
||||
Account const alice{"alice", KeyType::secp256k1};
|
||||
Account const bogie{"bogie", KeyType::secp256k1};
|
||||
@@ -761,32 +631,18 @@ private:
|
||||
// Create
|
||||
// Force close (true) and time advancement because the close time
|
||||
// is no longer 0.
|
||||
Oracle oracle(
|
||||
env,
|
||||
CreateArg{.owner = alice, .fee = baseFee, .close = true},
|
||||
false);
|
||||
oracle.set(CreateArg{
|
||||
.msig = msig(becky), .fee = baseFee, .err = ter(tefBAD_QUORUM)});
|
||||
oracle.set(CreateArg{
|
||||
.msig = msig(zelda), .fee = baseFee, .err = ter(tefBAD_SIGNATURE)});
|
||||
Oracle oracle(env, CreateArg{.owner = alice, .fee = baseFee, .close = true}, false);
|
||||
oracle.set(CreateArg{.msig = msig(becky), .fee = baseFee, .err = ter(tefBAD_QUORUM)});
|
||||
oracle.set(CreateArg{.msig = msig(zelda), .fee = baseFee, .err = ter(tefBAD_SIGNATURE)});
|
||||
oracle.set(CreateArg{.msig = msig(becky, bogie), .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.exists());
|
||||
|
||||
// Update
|
||||
oracle.set(UpdateArg{
|
||||
.series = {{"XRP", "USD", 740, 1}},
|
||||
.msig = msig(becky),
|
||||
.fee = baseFee,
|
||||
.err = ter(tefBAD_QUORUM)});
|
||||
.series = {{"XRP", "USD", 740, 1}}, .msig = msig(becky), .fee = baseFee, .err = ter(tefBAD_QUORUM)});
|
||||
oracle.set(UpdateArg{
|
||||
.series = {{"XRP", "USD", 740, 1}},
|
||||
.msig = msig(zelda),
|
||||
.fee = baseFee,
|
||||
.err = ter(tefBAD_SIGNATURE)});
|
||||
oracle.set(UpdateArg{
|
||||
.series = {{"XRP", "USD", 741, 1}},
|
||||
.msig = msig(becky, bogie),
|
||||
.fee = baseFee});
|
||||
.series = {{"XRP", "USD", 740, 1}}, .msig = msig(zelda), .fee = baseFee, .err = ter(tefBAD_SIGNATURE)});
|
||||
oracle.set(UpdateArg{.series = {{"XRP", "USD", 741, 1}}, .msig = msig(becky, bogie), .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.expectPrice({{"XRP", "USD", 741, 1}}));
|
||||
// remove the signer list
|
||||
env(signers(alice, jtx::none), sig(alie));
|
||||
@@ -802,24 +658,14 @@ private:
|
||||
.fee = baseFee,
|
||||
.err = ter(tefBAD_SIGNATURE)});
|
||||
// updated list succeeds
|
||||
oracle.set(UpdateArg{
|
||||
.series = {{"XRP", "USD", 7412, 2}},
|
||||
.msig = msig(zelda, bob),
|
||||
.fee = baseFee});
|
||||
oracle.set(UpdateArg{.series = {{"XRP", "USD", 7412, 2}}, .msig = msig(zelda, bob), .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.expectPrice({{"XRP", "USD", 7412, 2}}));
|
||||
oracle.set(UpdateArg{
|
||||
.series = {{"XRP", "USD", 74245, 3}},
|
||||
.msig = msig(ed),
|
||||
.fee = baseFee});
|
||||
oracle.set(UpdateArg{.series = {{"XRP", "USD", 74245, 3}}, .msig = msig(ed), .fee = baseFee});
|
||||
BEAST_EXPECT(oracle.expectPrice({{"XRP", "USD", 74245, 3}}));
|
||||
|
||||
// Remove
|
||||
oracle.remove(
|
||||
{.msig = msig(bob), .fee = baseFee, .err = ter(tefBAD_QUORUM)});
|
||||
oracle.remove(
|
||||
{.msig = msig(becky),
|
||||
.fee = baseFee,
|
||||
.err = ter(tefBAD_SIGNATURE)});
|
||||
oracle.remove({.msig = msig(bob), .fee = baseFee, .err = ter(tefBAD_QUORUM)});
|
||||
oracle.remove({.msig = msig(becky), .fee = baseFee, .err = ter(tefBAD_SIGNATURE)});
|
||||
oracle.remove({.msig = msig(ed), .fee = baseFee});
|
||||
BEAST_EXPECT(!oracle.exists());
|
||||
}
|
||||
@@ -833,13 +679,11 @@ private:
|
||||
auto const features = testable_amendments() - featurePriceOracle;
|
||||
Account const owner("owner");
|
||||
Env env(*this, features);
|
||||
auto const baseFee =
|
||||
static_cast<int>(env.current()->fees().base.drops());
|
||||
auto const baseFee = static_cast<int>(env.current()->fees().base.drops());
|
||||
|
||||
env.fund(XRP(1'000), owner);
|
||||
{
|
||||
Oracle oracle(
|
||||
env, {.owner = owner, .fee = baseFee, .err = ter(temDISABLED)});
|
||||
Oracle oracle(env, {.owner = owner, .fee = baseFee, .err = ter(temDISABLED)});
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user