chore: Enable clang-tidy misc checks (#6655)

This commit is contained in:
Alex Kremer
2026-03-31 18:29:45 +01:00
committed by GitHub
parent c3fae847f3
commit 2502befb42
469 changed files with 3915 additions and 3965 deletions

View File

@@ -61,9 +61,9 @@ private:
env(offer(carol, XRP(50), USD(50)));
// Good quality path
AMM ammCarol(env, carol, BTC(1'000), USD(100'100));
AMM const ammCarol(env, carol, BTC(1'000), USD(100'100));
PathSet paths(Path(XRP, USD), Path(USD));
PathSet const paths(Path(XRP, USD), Path(USD));
env(pay(alice, bob, USD(100)),
json(paths.json()),
@@ -114,7 +114,7 @@ private:
env(pay(gw2, bob, USD2(50)));
env.close();
AMM ammDan(env, dan, XRP(10'000), USD1(10'000));
AMM const ammDan(env, dan, XRP(10'000), USD1(10'000));
env(pay(alice, carol, USD2(50)),
path(~USD1, bob),
@@ -145,7 +145,7 @@ private:
env(pay(gw2, bob, USD2(50)));
env.close();
AMM ammDan(env, dan, XRP(10'000), USD1(10'050));
AMM const ammDan(env, dan, XRP(10'000), USD1(10'050));
env(pay(alice, carol, USD2(50)),
path(~USD1, bob),
@@ -269,7 +269,7 @@ private:
fund(env, gw, {bob, alice}, XRP(300'000), {USD(100)}, Fund::All);
AMM ammAlice(env, alice, XRP(150'000), USD(50));
AMM const ammAlice(env, alice, XRP(150'000), USD(50));
// Existing offer pays better than this wants.
// Partially consume existing offer.
@@ -302,7 +302,7 @@ private:
env(pay(gw, alice, alice["USD"](500)));
AMM ammAlice(env, alice, XRP(150'000), USD(51));
AMM const ammAlice(env, alice, XRP(150'000), USD(51));
env(offer(bob, USD(1), XRP(3'000)));
BEAST_EXPECT(ammAlice.expectBalances(XRP(153'000), USD(50), ammAlice.tokens()));
@@ -334,7 +334,7 @@ private:
env.require(owners(alice, 1), owners(bob, 1));
env(pay(gw, alice, alice["USD"](100)));
AMM ammBob(env, bob, USD(200), XRP(1'500));
AMM const ammBob(env, bob, USD(200), XRP(1'500));
env(pay(alice, alice, XRP(500)), sendmax(USD(100)));
@@ -459,7 +459,7 @@ private:
env(pay(gw2, dan, dan["EUR"](400)));
env.close();
AMM ammCarol(env, carol, USD1(5'000), XRP(50'000));
AMM const ammCarol(env, carol, USD1(5'000), XRP(50'000));
env(offer(dan, XRP(500), EUR1(50)));
env.close();
@@ -513,7 +513,7 @@ private:
env(pay(gw1, bob, bob["USD"](1'200)));
AMM ammBob(env, bob, XRP(1'000), USD1(1'200));
AMM const ammBob(env, bob, XRP(1'000), USD1(1'200));
// Alice has 350 fees - a reserve of 50 = 250 reserve = 100 available.
// Ask for more than available to prove reserve works.
env(offer(alice, USD1(200), XRP(200)));
@@ -548,7 +548,7 @@ private:
env(pay(gw, bob, USD(1)));
env(pay(gw, alice, USD(200)));
AMM ammAlice(env, alice, USD(150), XRP(150'100));
AMM const ammAlice(env, alice, USD(150), XRP(150'100));
env(offer(bob, XRP(100), USD(0.1)));
BEAST_EXPECT(ammAlice.expectBalances(USD(150.1), XRP(150'000), ammAlice.tokens()));
@@ -601,7 +601,7 @@ private:
env(pay(gw, bob, bob["USD"](2'200)));
AMM ammBob(env, bob, XRP(1'000), USD(2'200));
AMM const ammBob(env, bob, XRP(1'000), USD(2'200));
// Alice has 350 fees - a reserve of 50 = 250 reserve = 100 available.
// Ask for more than available to prove reserve works.
// Taker pays 100 USD for 100 XRP.
@@ -629,7 +629,7 @@ private:
auto const starting_xrp = XRP(100.1) + reserve(env, 1) + env.current()->fees().base * 2;
fund(env, gw, {alice, bob}, starting_xrp, {XTS(100), XXX(100)}, Fund::All);
AMM ammAlice(env, alice, XTS(100), XXX(100));
AMM const ammAlice(env, alice, XTS(100), XXX(100));
Json::Value payment;
payment[jss::secret] = toBase58(generateSeed("bob"));
@@ -677,8 +677,8 @@ private:
// o carol has EUR but wants USD.
// Note that carol's offer must come last. If carol's offer is
// placed before AMM is created, then autobridging will not occur.
AMM ammAlice(env, alice, XRP(10'000), USD(10'100));
AMM ammBob(env, bob, EUR(10'000), XRP(10'100));
AMM const ammAlice(env, alice, XRP(10'000), USD(10'100));
AMM const ammBob(env, bob, EUR(10'000), XRP(10'100));
// Carol makes an offer that consumes AMM liquidity and
// fully consumes Carol's offer.
@@ -704,7 +704,7 @@ private:
// Note that carol's offer must come last. If carol's offer is
// placed before AMM and bob's offer are created, then autobridging
// will not occur.
AMM ammAlice(env, alice, XRP(10'000), USD(10'100));
AMM const ammAlice(env, alice, XRP(10'000), USD(10'100));
env(offer(bob, EUR(100), XRP(100)));
env.close();
@@ -734,7 +734,7 @@ private:
// autobridging will not occur.
env(offer(alice, XRP(100), USD(100)));
env.close();
AMM ammBob(env, bob, EUR(10'000), XRP(10'100));
AMM const ammBob(env, bob, EUR(10'000), XRP(10'100));
// Carol makes an offer that consumes AMM liquidity and
// fully consumes Carol's offer.
@@ -764,7 +764,7 @@ private:
{
Env env{*this, features};
fund(env, gw, {alice, bob}, {USD(20'000)}, Fund::All);
AMM ammBob(env, bob, XRP(20'000), USD(200));
AMM const ammBob(env, bob, XRP(20'000), USD(200));
// alice submits a tfSell | tfFillOrKill offer that does not cross.
env(offer(alice, USD(2.1), XRP(210), tfSell | tfFillOrKill), ter(killedCode));
@@ -774,7 +774,7 @@ private:
{
Env env{*this, features};
fund(env, gw, {alice, bob}, {USD(1'000)}, Fund::All);
AMM ammBob(env, bob, XRP(20'000), USD(200));
AMM const ammBob(env, bob, XRP(20'000), USD(200));
// alice submits a tfSell | tfFillOrKill offer that crosses.
// Even though tfSell is present it doesn't matter this time.
env(offer(alice, USD(2), XRP(220), tfSell | tfFillOrKill));
@@ -790,7 +790,7 @@ private:
// returns more than was asked for (because of the tfSell flag).
Env env{*this, features};
fund(env, gw, {alice, bob}, {USD(1'000)}, Fund::All);
AMM ammBob(env, bob, XRP(20'000), USD(200));
AMM const ammBob(env, bob, XRP(20'000), USD(200));
env(offer(alice, USD(10), XRP(1'500), tfSell | tfFillOrKill));
env.close();
@@ -809,7 +809,7 @@ private:
// which matches alice's offer quality is ~ 10XRP/0.01996USD.
Env env{*this, features};
fund(env, gw, {alice, bob}, {USD(10'000)}, Fund::All);
AMM ammBob(env, bob, XRP(5000), USD(10));
AMM const ammBob(env, bob, XRP(5000), USD(10));
env(offer(alice, USD(1), XRP(501), tfSell | tfFillOrKill), ter(tecKILLED));
env.close();
@@ -876,7 +876,7 @@ private:
// o carol has EUR but wants USD.
// Note that Carol's offer must come last. If Carol's offer is
// placed before AMM is created, then autobridging will not occur.
AMM ammAlice(env, alice, XRP(10'000), USD(10'100));
AMM const ammAlice(env, alice, XRP(10'000), USD(10'100));
env(offer(bob, EUR(100), XRP(100)));
env.close();
@@ -907,7 +907,7 @@ private:
// o carol has EUR but wants USD.
// Note that Carol's offer must come last. If Carol's offer is
// placed before AMM is created, then autobridging will not occur.
AMM ammAlice(env, alice, XRP(10'000), USD(10'050));
AMM const ammAlice(env, alice, XRP(10'000), USD(10'050));
env(offer(bob, EUR(100), XRP(100)));
env.close();
@@ -953,7 +953,7 @@ private:
// o carol has EUR but wants USD.
// Note that Carol's offer must come last. If Carol's offer is
// placed before AMM is created, then autobridging will not occur.
AMM ammAlice(env, alice, XRP(10'000), USD(10'100));
AMM const ammAlice(env, alice, XRP(10'000), USD(10'100));
env(offer(bob, EUR(100), XRP(100)));
env.close();
@@ -995,7 +995,7 @@ private:
// o carol has EUR but wants USD.
// Note that Carol's offer must come last. If Carol's offer is
// placed before AMM is created, then autobridging will not occur.
AMM ammAlice(env, alice, XRP(10'000), USD(10'100));
AMM const ammAlice(env, alice, XRP(10'000), USD(10'100));
env(offer(bob, EUR(100), XRP(100)));
env.close();
@@ -1029,7 +1029,7 @@ private:
env.fund(XRP(30'000) + f, alice, bob);
env.close();
AMM ammBob(env, bob, XRP(10'000), USD_bob(10'100));
AMM const ammBob(env, bob, XRP(10'000), USD_bob(10'100));
env(offer(alice, USD_bob(100), XRP(100)));
env.close();
@@ -1086,7 +1086,7 @@ private:
BEAST_EXPECT(expectHolding(env, dan, A_BUX(none)));
BEAST_EXPECT(expectHolding(env, dan, D_BUX(none)));
AMM ammBob(env, bob, A_BUX(30), D_BUX(30));
AMM const ammBob(env, bob, A_BUX(30), D_BUX(30));
env(trust(ann, D_BUX(100)));
env.close();
@@ -1143,7 +1143,7 @@ private:
env(pay(bob, carol, B_BUX(400)));
env(pay(ann, carol, A_BUX(400)));
AMM ammCarol(env, carol, A_BUX(300), B_BUX(330));
AMM const ammCarol(env, carol, A_BUX(300), B_BUX(330));
// cam puts an offer on the books that her upcoming offer could cross.
// But this offer should be deleted, not crossed, by her upcoming
@@ -1215,7 +1215,7 @@ private:
env(pay(gw, alice, USD(1'000)));
env.close();
// Alice is able to create AMM since the GW has authorized her
AMM ammAlice(env, alice, USD(1'000), XRP(1'050));
AMM const ammAlice(env, alice, USD(1'000), XRP(1'050));
// Set up authorized trust line for AMM.
env(trust(gw, STAmount{Issue{USD.currency, ammAlice.ammAccount()}, 10}),
@@ -1250,7 +1250,7 @@ private:
// Alice doesn't have the funds
{
AMM ammAlice(env, alice, USD(1'000), XRP(1'000), ter(tecUNFUNDED_AMM));
AMM const ammAlice(env, alice, USD(1'000), XRP(1'000), ter(tecUNFUNDED_AMM));
}
env(fset(gw, asfRequireAuth));
@@ -1267,7 +1267,7 @@ private:
// Alice should not be able to create AMM without authorization.
{
AMM ammAlice(env, alice, USD(1'000), XRP(1'000), ter(tecNO_LINE));
AMM const ammAlice(env, alice, USD(1'000), XRP(1'000), ter(tecNO_LINE));
}
// Set up a trust line for Alice, but don't authorize it. Alice
@@ -1276,7 +1276,7 @@ private:
env.close();
{
AMM ammAlice(env, alice, USD(1'000), XRP(1'000), ter(tecNO_AUTH));
AMM const ammAlice(env, alice, USD(1'000), XRP(1'000), ter(tecNO_AUTH));
}
// Finally, set up an authorized trust line for Alice. Now Alice's
@@ -1286,7 +1286,7 @@ private:
env(pay(gw, alice, USD(1'000)));
env.close();
AMM ammAlice(env, alice, USD(1'000), XRP(1'050));
AMM const ammAlice(env, alice, USD(1'000), XRP(1'050));
// Set up authorized trust line for AMM.
env(trust(gw, STAmount{Issue{USD.currency, ammAlice.ammAccount()}, 10}),
@@ -1349,7 +1349,7 @@ private:
env.fund(XRP(100'000'250), alice);
fund(env, gw, {carol, bob}, {USD(100)}, Fund::All);
fund(env, gw, {alice}, {USD(100)}, Fund::IOUOnly);
AMM ammCarol(env, carol, XRP(100), USD(100));
AMM const ammCarol(env, carol, XRP(100), USD(100));
STPathSet st;
STAmount sa;
@@ -1383,7 +1383,7 @@ private:
env.trust(AUD(2'000), bob, carol);
env(pay(gw, carol, AUD(51)));
env.close();
AMM ammCarol(env, carol, XRP(40), AUD(51));
AMM const ammCarol(env, carol, XRP(40), AUD(51));
env(pay(alice, bob, AUD(10)), sendmax(XRP(100)), paths(XRP));
env.close();
// AMM offer is 51.282052XRP/11AUD, 11AUD/1.1 = 10AUD to bob
@@ -1404,7 +1404,7 @@ private:
// XRP -> IOU receive max
Env env = pathTestEnv();
fund(env, gw, {alice, bob, charlie}, {USD(11)}, Fund::All);
AMM ammCharlie(env, charlie, XRP(10), USD(11));
AMM const ammCharlie(env, charlie, XRP(10), USD(11));
auto [st, sa, da] = find_paths(env, alice, bob, USD(-1), XRP(1).value());
BEAST_EXPECT(sa == XRP(1));
BEAST_EXPECT(equal(da, USD(1)));
@@ -1420,7 +1420,7 @@ private:
// IOU -> XRP receive max
Env env = pathTestEnv();
fund(env, gw, {alice, bob, charlie}, {USD(11)}, Fund::All);
AMM ammCharlie(env, charlie, XRP(11), USD(10));
AMM const ammCharlie(env, charlie, XRP(11), USD(10));
env.close();
auto [st, sa, da] = find_paths(env, alice, bob, drops(-1), USD(1).value());
BEAST_EXPECT(sa == USD(1));
@@ -1441,13 +1441,13 @@ private:
testcase("Path Find: XRP -> XRP and XRP -> IOU");
using namespace jtx;
Env env = pathTestEnv();
Account A1{"A1"};
Account A2{"A2"};
Account A3{"A3"};
Account G1{"G1"};
Account G2{"G2"};
Account G3{"G3"};
Account M1{"M1"};
Account const A1{"A1"};
Account const A2{"A2"};
Account const A3{"A3"};
Account const G1{"G1"};
Account const G2{"G2"};
Account const G3{"G3"};
Account const M1{"M1"};
env.fund(XRP(100'000), A1);
env.fund(XRP(10'000), A2);
@@ -1472,8 +1472,8 @@ private:
env(pay(G3, M1, G3["ABC"](25'000)));
env.close();
AMM ammM1_G1_G2(env, M1, G1["XYZ"](1'000), G2["XYZ"](1'000));
AMM ammM1_XRP_G3(env, M1, XRP(10'000), G3["ABC"](1'000));
AMM const ammM1_G1_G2(env, M1, G1["XYZ"](1'000), G2["XYZ"](1'000));
AMM const ammM1_XRP_G3(env, M1, XRP(10'000), G3["ABC"](1'000));
STPathSet st;
STAmount sa, da;
@@ -1526,10 +1526,10 @@ private:
testcase("Path Find: non-XRP -> XRP");
using namespace jtx;
Env env = pathTestEnv();
Account A1{"A1"};
Account A2{"A2"};
Account G3{"G3"};
Account M1{"M1"};
Account const A1{"A1"};
Account const A2{"A2"};
Account const G3{"G3"};
Account const M1{"M1"};
env.fund(XRP(1'000), A1, A2, G3);
env.fund(XRP(11'000), M1);
@@ -1544,7 +1544,7 @@ private:
env(pay(G3, M1, G3["ABC"](1'200)));
env.close();
AMM ammM1(env, M1, G3["ABC"](1'000), XRP(10'010));
AMM const ammM1(env, M1, G3["ABC"](1'000), XRP(10'010));
STPathSet st;
STAmount sa, da;
@@ -1562,16 +1562,16 @@ private:
testcase("Path Find: non-XRP -> non-XRP, same currency");
using namespace jtx;
Env env = pathTestEnv();
Account A1{"A1"};
Account A2{"A2"};
Account A3{"A3"};
Account A4{"A4"};
Account G1{"G1"};
Account G2{"G2"};
Account G3{"G3"};
Account G4{"G4"};
Account M1{"M1"};
Account M2{"M2"};
Account const A1{"A1"};
Account const A2{"A2"};
Account const A3{"A3"};
Account const A4{"A4"};
Account const G1{"G1"};
Account const G2{"G2"};
Account const G3{"G3"};
Account const G4{"G4"};
Account const M1{"M1"};
Account const M2{"M2"};
env.fund(XRP(1'000), A1, A2, A3, G1, G2, G3, G4);
env.fund(XRP(10'000), A4);
@@ -1596,9 +1596,9 @@ private:
env(pay(G2, M2, G2["HKD"](5'000)));
env.close();
AMM ammM1(env, M1, G1["HKD"](1'010), G2["HKD"](1'000));
AMM ammM2XRP_G2(env, M2, XRP(10'000), G2["HKD"](1'010));
AMM ammM2G1_XRP(env, M2, G1["HKD"](1'010), XRP(10'000));
AMM const ammM1(env, M1, G1["HKD"](1'010), G2["HKD"](1'000));
AMM const ammM2XRP_G2(env, M2, XRP(10'000), G2["HKD"](1'010));
AMM const ammM2G1_XRP(env, M2, G1["HKD"](1'010), XRP(10'000));
STPathSet st;
STAmount sa, da;
@@ -1692,12 +1692,12 @@ private:
testcase("Path Find: non-XRP -> non-XRP, same currency");
using namespace jtx;
Env env = pathTestEnv();
Account A1{"A1"};
Account A2{"A2"};
Account A3{"A3"};
Account G1{"G1"};
Account G2{"G2"};
Account M1{"M1"};
Account const A1{"A1"};
Account const A2{"A2"};
Account const A3{"A3"};
Account const G1{"G1"};
Account const G2{"G2"};
Account const M1{"M1"};
env.fund(XRP(11'000), M1);
env.fund(XRP(1'000), A1, A2, A3, G1, G2);
@@ -1716,7 +1716,7 @@ private:
env(pay(G2, M1, G2["HKD"](5'000)));
env.close();
AMM ammM1(env, M1, G1["HKD"](1'010), G2["HKD"](1'000));
AMM const ammM1(env, M1, G1["HKD"](1'010), G2["HKD"](1'000));
// E) Gateway to user
// Source -> OB -> AC -> Destination
@@ -1759,7 +1759,7 @@ private:
// tecPATH_DRY, but the entire path should not be marked as dry.
// This is the second error case to test (when flowV1 is used).
env(offer(bob, EUR(50), XRP(50)));
AMM ammBob(env, bob, ammXrpPool, USD(150));
AMM const ammBob(env, bob, ammXrpPool, USD(150));
env(pay(alice, carol, USD(1'000'000)),
path(~XRP, ~USD),
@@ -1783,7 +1783,7 @@ private:
fund(env, gw, {alice, bob, carol}, XRP(10'000), {BTC(100), USD(150)}, Fund::All);
AMM ammBob(env, bob, BTC(100), USD(150));
AMM const ammBob(env, bob, BTC(100), USD(150));
env(pay(alice, carol, USD(50)), path(~USD), sendmax(BTC(50)));
@@ -1799,8 +1799,8 @@ private:
fund(env, gw, {alice, carol, bob}, XRP(10'000), {BTC(100), USD(150)}, Fund::All);
AMM ammBobBTC_XRP(env, bob, BTC(100), XRP(150));
AMM ammBobXRP_USD(env, bob, XRP(100), USD(150));
AMM const ammBobBTC_XRP(env, bob, BTC(100), XRP(150));
AMM const ammBobXRP_USD(env, bob, XRP(100), USD(150));
env(pay(alice, carol, USD(50)), path(~XRP, ~USD), sendmax(BTC(50)));
@@ -1817,7 +1817,7 @@ private:
fund(env, gw, {alice, carol, bob}, XRP(10'000), {USD(150)}, Fund::All);
AMM ammBob(env, bob, XRP(100), USD(150));
AMM const ammBob(env, bob, XRP(100), USD(150));
env(pay(alice, carol, USD(50)), path(~USD), sendmax(XRP(50)));
@@ -1833,7 +1833,7 @@ private:
fund(env, gw, {alice, carol, bob}, XRP(10'000), {USD(100)}, Fund::All);
AMM ammBob(env, bob, USD(100), XRP(150));
AMM const ammBob(env, bob, USD(100), XRP(150));
env(pay(alice, carol, XRP(50)), path(~XRP), sendmax(USD(50)));
@@ -1863,7 +1863,7 @@ private:
env(offer(bob, BTC(50), USD(50)));
env(offer(bob, BTC(40), EUR(50)));
env.close();
AMM ammBob(env, bob, EUR(100), USD(150));
AMM const ammBob(env, bob, EUR(100), USD(150));
// unfund offer
env(pay(bob, gw, EUR(50)));
@@ -1914,7 +1914,7 @@ private:
env.close();
// This is multiplath, which generates limited # of offers
AMM ammBobBTC_USD(env, bob, BTC(50), USD(50));
AMM const ammBobBTC_USD(env, bob, BTC(50), USD(50));
env(offer(bob, BTC(60), EUR(50)));
env(offer(carol, BTC(1'000), EUR(1)));
env(offer(bob, EUR(50), USD(50)));
@@ -1928,7 +1928,7 @@ private:
auto flowJournal = env.app().getJournal("Flow");
auto const flowResult = [&] {
STAmount deliver(USD(51));
STAmount const deliver(USD(51));
STAmount smax(BTC(61));
PaymentSandbox sb(env.current().get(), tapNONE);
STPathSet paths;
@@ -1941,10 +1941,10 @@ private:
};
{
// BTC -> USD
STPath p1({IPE(USD.issue())});
STPath const p1({IPE(USD.issue())});
paths.push_back(p1);
// BTC -> EUR -> USD
STPath p2({IPE(EUR.issue()), IPE(USD.issue())});
STPath const p2({IPE(EUR.issue()), IPE(USD.issue())});
paths.push_back(p2);
}
@@ -2007,7 +2007,7 @@ private:
env.close();
// env(offer(bob, USD(1), drops(2)), txflags(tfPassive));
AMM ammBob(env, bob, USD(8), XRPAmount{21});
AMM const ammBob(env, bob, USD(8), XRPAmount{21});
env(offer(bob, drops(1), EUR(1'000)), txflags(tfPassive));
env(pay(alice, carol, EUR(1)),
@@ -2034,7 +2034,7 @@ private:
env(rate(gw, 1.25));
env.close();
AMM amm(env, bob, GBP(1'000), USD(1'000));
AMM const amm(env, bob, GBP(1'000), USD(1'000));
env(pay(alice, carol, USD(100)),
path(~USD),
@@ -2075,7 +2075,7 @@ private:
env(offer(ed, GBP(1'000), EUR(1'000)), txflags(tfPassive));
env.close();
AMM amm(env, bob, EUR(1'000), USD(1'000));
AMM const amm(env, bob, EUR(1'000), USD(1'000));
env(pay(alice, carol, USD(100)),
path(~EUR, ~USD),
@@ -2109,8 +2109,8 @@ private:
env(rate(gw, 1.25));
env.close();
AMM amm1(env, bob, GBP(1'000), EUR(1'000));
AMM amm2(env, ed, EUR(1'000), USD(1'000));
AMM const amm1(env, bob, GBP(1'000), EUR(1'000));
AMM const amm2(env, ed, EUR(1'000), USD(1'000));
env(pay(alice, carol, USD(100)),
path(~EUR, ~USD),
@@ -2159,7 +2159,7 @@ private:
env(rate(gw, 1.25));
env.close();
AMM amm(env, bob, USD(1'000), EUR(1'100));
AMM const amm(env, bob, USD(1'000), EUR(1'100));
env(offer(alice, EUR(100), USD(100)));
env.close();
@@ -2178,7 +2178,7 @@ private:
env(rate(gw, 1.25));
env.close();
AMM amm(env, bob, GBP(1'000), USD(1'000));
AMM const amm(env, bob, GBP(1'000), USD(1'000));
// requested quality limit is 100USD/178.58GBP = 0.55997
// trade quality is 100USD/178.5714 = 0.55999
@@ -2209,7 +2209,7 @@ private:
env(rate(gw, 1.25));
env.close();
AMM amm(env, bob, GBP(1'000), USD(1'200));
AMM const amm(env, bob, GBP(1'000), USD(1'200));
// requested quality limit is 90USD/120GBP = 0.75
// trade quality is 22.5USD/30GBP = 0.75
@@ -2259,7 +2259,7 @@ private:
env(offer(ed, GBP(1'000), EUR(1'000)), txflags(tfPassive));
env.close();
AMM amm(env, bob, EUR(1'000), USD(1'400));
AMM const amm(env, bob, EUR(1'000), USD(1'400));
// requested quality limit is 95USD/140GBP = 0.6785
// trade quality is 59.7321USD/88.0262GBP = 0.6785
@@ -2340,7 +2340,7 @@ private:
env(rate(gw, 1.25));
env.close();
AMM amm(env, bob, GBP(1'000), EUR(1'000));
AMM const amm(env, bob, GBP(1'000), EUR(1'000));
env(offer(ed, EUR(1'000), USD(1'400)), txflags(tfPassive));
env.close();
@@ -2412,8 +2412,8 @@ private:
env(rate(gw, 1.25));
env.close();
AMM amm1(env, bob, GBP(1'000), EUR(1'000));
AMM amm2(env, ed, EUR(1'000), USD(1'400));
AMM const amm1(env, bob, GBP(1'000), EUR(1'000));
AMM const amm2(env, ed, EUR(1'000), USD(1'400));
// requested quality limit is 90USD/145GBP = 0.6206
// trade quality is 66.7432USD/107.5308GBP = 0.6206
@@ -2474,8 +2474,8 @@ private:
env(rate(gw, 1.25));
env.close();
AMM amm1(env, alice, GBP(1'000), EUR(1'000));
AMM amm2(env, bob, EUR(1'000), USD(1'400));
AMM const amm1(env, alice, GBP(1'000), EUR(1'000));
AMM const amm2(env, bob, EUR(1'000), USD(1'400));
// requested quality limit is 90USD/120GBP = 0.75
// trade quality is 81.1111USD/108.1481GBP = 0.75
@@ -2534,7 +2534,7 @@ private:
fund(env, gw, {alice, bob, carol}, XRP(10'000), {USD(2'000)});
AMM ammBob(env, bob, XRP(1'000), USD(1'050));
AMM const ammBob(env, bob, XRP(1'000), USD(1'050));
env(offer(bob, XRP(100), USD(50)));
env(pay(alice, carol, USD(100)),
@@ -2561,8 +2561,8 @@ private:
// fails with tecPATH_DRY.
fund(env, gw, {alice, bob}, XRP(10'000), {USD(200), EUR(200)}, Fund::All);
AMM ammAliceXRP_USD(env, alice, XRP(100), USD(101));
AMM ammAliceXRP_EUR(env, alice, XRP(100), EUR(101));
AMM const ammAliceXRP_USD(env, alice, XRP(100), USD(101));
AMM const ammAliceXRP_EUR(env, alice, XRP(100), EUR(101));
env.close();
TER const expectedTer = TER{temBAD_PATH_LOOP};
@@ -2579,8 +2579,8 @@ private:
// with tecPATH_DRY.
fund(env, gw, {alice, bob}, XRP(10'000), {USD(200), EUR(200)}, Fund::All);
AMM ammAliceXRP_USD(env, alice, XRP(100), USD(100));
AMM ammAliceXRP_EUR(env, alice, XRP(100), EUR(100));
AMM const ammAliceXRP_USD(env, alice, XRP(100), USD(100));
AMM const ammAliceXRP_EUR(env, alice, XRP(100), EUR(100));
// EUR -> //XRP -> //USD ->XRP
env(pay(alice, bob, XRP(1)),
path(~XRP, ~USD, ~XRP),
@@ -2597,9 +2597,9 @@ private:
// with tecPATH_DRY.
fund(env, gw, {alice, bob}, XRP(10'000), {USD(200), EUR(200), JPY(200)}, Fund::All);
AMM ammAliceXRP_USD(env, alice, XRP(100), USD(100));
AMM ammAliceXRP_EUR(env, alice, XRP(100), EUR(100));
AMM ammAliceXRP_JPY(env, alice, XRP(100), JPY(100));
AMM const ammAliceXRP_USD(env, alice, XRP(100), USD(100));
AMM const ammAliceXRP_EUR(env, alice, XRP(100), EUR(100));
AMM const ammAliceXRP_JPY(env, alice, XRP(100), JPY(100));
env(pay(alice, bob, JPY(1)),
path(~XRP, ~EUR, ~XRP, ~JPY),
@@ -2628,7 +2628,7 @@ private:
env(pay(gw, dan, USD(1)));
n_offers(env, 2'000, bob, XRP(1), USD(1));
n_offers(env, 1, dan, XRP(1), USD(1));
AMM ammEd(env, ed, XRP(9), USD(11));
AMM const ammEd(env, ed, XRP(9), USD(11));
// Alice offers to buy 1000 XRP for 1000 USD. She takes Bob's first
// offer, removes 999 more as unfunded, then hits the step limit.
@@ -2687,7 +2687,7 @@ private:
txflags(tfPartialPayment),
ter(temBAD_AMOUNT));
env(pay(gw, carol, USD(50)));
AMM ammCarol(env, carol, XRP(10), USD(15));
AMM const ammCarol(env, carol, XRP(10), USD(15));
env(pay(alice, bob, USD(10)),
paths(XRP),
deliver_min(USD(7)),
@@ -2703,7 +2703,7 @@ private:
fund(env, gw, {alice, bob}, XRP(10'000));
env.trust(USD(1'100), alice, bob);
env(pay(gw, bob, USD(1'100)));
AMM ammBob(env, bob, XRP(1'000), USD(1'100));
AMM const ammBob(env, bob, XRP(1'000), USD(1'100));
env(pay(alice, alice, USD(10'000)),
paths(XRP),
deliver_min(USD(100)),
@@ -2717,7 +2717,7 @@ private:
fund(env, gw, {alice, bob, carol}, XRP(10'000));
env.trust(USD(1'200), bob, carol);
env(pay(gw, bob, USD(1'200)));
AMM ammBob(env, bob, XRP(5'500), USD(1'200));
AMM const ammBob(env, bob, XRP(5'500), USD(1'200));
env(pay(alice, carol, USD(10'000)),
paths(XRP),
deliver_min(USD(200)),
@@ -2743,7 +2743,7 @@ private:
env(pay(gw, dan, USD(1'100)));
env(offer(bob, XRP(100), USD(100)));
env(offer(bob, XRP(1'000), USD(100)));
AMM ammDan(env, dan, XRP(1'000), USD(1'100));
AMM const ammDan(env, dan, XRP(1'000), USD(1'100));
if (!features[fixAMMv1_1])
{
env(pay(alice, carol, USD(10'000)),
@@ -2794,7 +2794,7 @@ private:
env(pay(gw, alice, USD(500)));
env.close();
AMM ammAlice(env, alice, XRP(100), USD(140));
AMM const ammAlice(env, alice, XRP(100), USD(140));
// becky pays herself USD (10) by consuming part of alice's offer.
// Make sure the payment works if PaymentAuth is not involved.
@@ -2829,7 +2829,7 @@ private:
env(pay(gw, alice, USD(150)));
env(pay(gw, carol, USD(150)));
AMM ammCarol(env, carol, USD(100), XRPAmount(101));
AMM const ammCarol(env, carol, USD(100), XRPAmount(101));
// Make sure bob's trust line is all set up so he can receive USD.
env(pay(alice, bob, USD(50)));
@@ -2926,7 +2926,7 @@ private:
env(pay(G1, alice, G1["USD"](205)));
env.close();
AMM ammAlice(env, alice, XRP(500), G1["USD"](105));
AMM const ammAlice(env, alice, XRP(500), G1["USD"](105));
{
auto lines = getAccountLines(env, bob);
@@ -3040,11 +3040,11 @@ private:
using namespace test::jtx;
Env env(*this, features);
Account G1{"G1"};
Account A1{"A1"};
Account A2{"A2"};
Account A3{"A3"};
Account A4{"A4"};
Account const G1{"G1"};
Account const A1{"A1"};
Account const A2{"A2"};
Account const A3{"A3"};
Account const A4{"A4"};
env.fund(XRP(12'000), G1);
env.fund(XRP(1'000), A1);
@@ -3063,7 +3063,7 @@ private:
env(pay(G1, A4, G1["BTC"](100)));
env.close();
AMM ammG1(env, G1, XRP(10'000), G1["USD"](100));
AMM const ammG1(env, G1, XRP(10'000), G1["USD"](100));
env(offer(A1, XRP(10'000), G1["USD"](100)), txflags(tfPassive));
env(offer(A2, G1["USD"](100), XRP(10'000)), txflags(tfPassive));
env.close();
@@ -3129,7 +3129,7 @@ private:
env.require(nflags(G1, asfNoFreeze));
// test: assets can't be bought on the market
AMM ammA3(env, A3, G1["BTC"](1), XRP(1), ter(tecFROZEN));
AMM const ammA3(env, A3, G1["BTC"](1), XRP(1), ter(tecFROZEN));
// test: assets can't be sold on the market
// AMM is bidirectional
@@ -3170,10 +3170,10 @@ private:
using namespace test::jtx;
Env env(*this, features);
Account G1{"G1"};
Account A2{"A2"};
Account A3{"A3"};
Account A4{"A4"};
Account const G1{"G1"};
Account const A2{"A2"};
Account const A3{"A3"};
Account const A4{"A4"};
env.fund(XRP(2'000), G1, A3, A4);
env.fund(XRP(2'000), A2);
@@ -3188,7 +3188,7 @@ private:
env(pay(G1, A4, G1["USD"](2'001)));
env.close();
AMM ammA3(env, A3, XRP(1'000), G1["USD"](1'001));
AMM const ammA3(env, A3, XRP(1'000), G1["USD"](1'001));
// removal after successful payment
// test: make a payment with partially consuming offer
@@ -3299,8 +3299,8 @@ private:
fund(env, gw, {alice, bob, carol}, XRP(10'000), {USD(2'000), EUR(1'000)});
AMM bobXRP_USD(env, bob, XRP(1'000), USD(1'000));
AMM bobUSD_EUR(env, bob, USD(1'000), EUR(1'000));
AMM const bobXRP_USD(env, bob, XRP(1'000), USD(1'000));
AMM const bobUSD_EUR(env, bob, USD(1'000), EUR(1'000));
// payment path: XRP -> XRP/USD -> USD/EUR -> EUR/USD
env(pay(alice, carol, USD(100)),
@@ -3327,10 +3327,10 @@ private:
fund(env, bob, {alice, gw}, {BobUSD(100), BobEUR(100)}, Fund::IOUOnly);
env.close();
AMM ammBobXRP_USD(env, bob, XRP(100), BobUSD(100));
AMM const ammBobXRP_USD(env, bob, XRP(100), BobUSD(100));
env(offer(gw, XRP(100), USD(100)), txflags(tfPassive));
AMM ammBobUSD_EUR(env, bob, BobUSD(100), BobEUR(100));
AMM const ammBobUSD_EUR(env, bob, BobUSD(100), BobEUR(100));
env(offer(gw, USD(100), EUR(100)), txflags(tfPassive));
Path const p = [&] {
@@ -3340,7 +3340,7 @@ private:
return result;
}();
PathSet paths(p);
PathSet const paths(p);
env(pay(alice, alice, EUR(1)),
json(paths.json()),
@@ -3354,7 +3354,7 @@ private:
fund(env, gw, {alice, bob, carol}, XRP(10'000), {USD(100)});
AMM ammBob(env, bob, XRP(100), USD(100));
AMM const ammBob(env, bob, XRP(100), USD(100));
// payment path: XRP -> XRP/USD -> USD/XRP
env(pay(alice, carol, XRP(100)),
@@ -3368,7 +3368,7 @@ private:
fund(env, gw, {alice, bob, carol}, XRP(10'000), {USD(100)});
AMM ammBob(env, bob, XRP(100), USD(100));
AMM const ammBob(env, bob, XRP(100), USD(100));
// payment path: XRP -> XRP/USD -> USD/XRP
env(pay(alice, carol, XRP(100)),
@@ -3398,7 +3398,7 @@ private:
env(pay(gw, alice, USD(100)));
env.close();
AMM ammBob(env, bob, XRP(100), USD(100));
AMM const ammBob(env, bob, XRP(100), USD(100));
// payment path: USD -> USD/XRP -> XRP/USD
env(pay(alice, carol, USD(100)),
@@ -3421,9 +3421,9 @@ private:
env(pay(gw, bob, EUR(200)));
env(pay(gw, bob, CNY(100)));
AMM ammBobXRP_USD(env, bob, XRP(100), USD(100));
AMM ammBobUSD_EUR(env, bob, USD(100), EUR(100));
AMM ammBobEUR_CNY(env, bob, EUR(100), CNY(100));
AMM const ammBobXRP_USD(env, bob, XRP(100), USD(100));
AMM const ammBobUSD_EUR(env, bob, USD(100), EUR(100));
AMM const ammBobEUR_CNY(env, bob, EUR(100), CNY(100));
// payment path: XRP->XRP/USD->USD/EUR->USD/CNY
env(pay(alice, carol, CNY(100)),