mirror of
https://github.com/XRPLF/rippled.git
synced 2026-04-29 15:37:57 +00:00
test: enable unit tests to work with variable reference fee (#5145)
Fix remaining unit tests to be able to process reference fee values other than 10.
This commit is contained in:
@@ -127,14 +127,17 @@ private:
|
||||
auto const USD2 = gw2["USD"];
|
||||
|
||||
env.fund(XRP(20'000), alice, noripple(bob), carol, dan, gw1, gw2);
|
||||
env.close();
|
||||
env.trust(USD1(20'000), alice, carol, dan);
|
||||
env(trust(bob, USD1(1'000), tfSetNoRipple));
|
||||
env.trust(USD2(1'000), alice, carol, dan);
|
||||
env(trust(bob, USD2(1'000), tfSetNoRipple));
|
||||
env.close();
|
||||
|
||||
env(pay(gw1, dan, USD1(10'000)));
|
||||
env(pay(gw1, bob, USD1(50)));
|
||||
env(pay(gw2, bob, USD2(50)));
|
||||
env.close();
|
||||
|
||||
AMM ammDan(env, dan, XRP(10'000), USD1(10'000));
|
||||
|
||||
@@ -157,12 +160,15 @@ private:
|
||||
|
||||
env.fund(XRP(20'000), alice, bob, carol, gw1, gw2);
|
||||
env.fund(XRP(20'000), dan);
|
||||
env.close();
|
||||
env.trust(USD1(20'000), alice, bob, carol, dan);
|
||||
env.trust(USD2(1'000), alice, bob, carol, dan);
|
||||
env.close();
|
||||
|
||||
env(pay(gw1, dan, USD1(10'050)));
|
||||
env(pay(gw1, bob, USD1(50)));
|
||||
env(pay(gw2, bob, USD2(50)));
|
||||
env.close();
|
||||
|
||||
AMM ammDan(env, dan, XRP(10'000), USD1(10'050));
|
||||
|
||||
@@ -337,6 +343,7 @@ private:
|
||||
Env env{*this, features};
|
||||
|
||||
env.fund(XRP(200'000), gw, alice, bob);
|
||||
env.close();
|
||||
|
||||
env(trust(alice, USD(1'000)));
|
||||
|
||||
@@ -440,6 +447,7 @@ private:
|
||||
testAMM(
|
||||
[&](AMM& ammAlice, Env& env) {
|
||||
env.fund(XRP(1'000), bob);
|
||||
env.close();
|
||||
env(trust(bob, USD(100)));
|
||||
env.close();
|
||||
env(pay(alice, bob, USD(100)), sendmax(XRP(100)));
|
||||
@@ -463,6 +471,7 @@ private:
|
||||
testAMM(
|
||||
[&](AMM& ammAlice, Env& env) {
|
||||
env.fund(XRP(1'000), bob);
|
||||
env.close();
|
||||
env(trust(bob, USD(100)));
|
||||
env.close();
|
||||
env(pay(alice, bob, XRP(100)), sendmax(USD(100)));
|
||||
@@ -493,7 +502,6 @@ private:
|
||||
auto const EUR1 = gw2["EUR"];
|
||||
|
||||
fund(env, gw1, {gw2, alice, bob, carol, dan}, XRP(60'000));
|
||||
|
||||
env(trust(alice, USD1(1'000)));
|
||||
env.close();
|
||||
env(trust(bob, EUR1(1'000)));
|
||||
@@ -558,6 +566,7 @@ private:
|
||||
|
||||
env.fund(starting_xrp, gw1, gw2, gw3, alice);
|
||||
env.fund(XRP(2'000), bob);
|
||||
env.close();
|
||||
|
||||
env(trust(alice, USD1(1'000)));
|
||||
env(trust(alice, USD2(1'000)));
|
||||
@@ -657,6 +666,7 @@ private:
|
||||
|
||||
env.fund(starting_xrp, gw, alice);
|
||||
env.fund(XRP(2'000), bob);
|
||||
env.close();
|
||||
|
||||
env(trust(alice, USD(150)));
|
||||
env(trust(bob, USD(4'000)));
|
||||
@@ -1516,6 +1526,7 @@ private:
|
||||
Env env = pathTestEnv();
|
||||
auto const AUD = gw["AUD"];
|
||||
env.fund(XRP(10'000), alice, bob, carol, gw);
|
||||
env.close();
|
||||
env(rate(gw, 1.1));
|
||||
env.trust(AUD(2'000), bob, carol);
|
||||
env(pay(gw, carol, AUD(51)));
|
||||
@@ -1892,6 +1903,7 @@ private:
|
||||
fund(env, gw, {carol}, XRP(10'000), {}, Fund::Acct);
|
||||
auto const AMMXRPPool = env.current()->fees().increment * 2;
|
||||
env.fund(reserve(env, 5) + ammCrtFee(env) + AMMXRPPool, bob);
|
||||
env.close();
|
||||
env.trust(USD(1'000), alice, bob, carol);
|
||||
env.trust(EUR(1'000), alice, bob, carol);
|
||||
|
||||
@@ -2028,16 +2040,20 @@ private:
|
||||
|
||||
env.fund(XRP(10'000), alice, carol, gw);
|
||||
env.fund(XRP(10'000), bob);
|
||||
env.close();
|
||||
env.trust(USD(1'000), alice, bob, carol);
|
||||
env.trust(BTC(1'000), alice, bob, carol);
|
||||
env.trust(EUR(1'000), alice, bob, carol);
|
||||
env.close();
|
||||
|
||||
env(pay(gw, alice, BTC(60)));
|
||||
env(pay(gw, bob, USD(200)));
|
||||
env(pay(gw, bob, EUR(150)));
|
||||
env.close();
|
||||
|
||||
env(offer(bob, BTC(50), USD(50)));
|
||||
env(offer(bob, BTC(40), EUR(50)));
|
||||
env.close();
|
||||
AMM ammBob(env, bob, EUR(100), USD(150));
|
||||
|
||||
// unfund offer
|
||||
@@ -2076,18 +2092,21 @@ private:
|
||||
Env env(*this, features);
|
||||
|
||||
env.fund(XRP(10'000), bob, carol, gw);
|
||||
env.close();
|
||||
// Sets rippling on, this is different from
|
||||
// the original test
|
||||
fund(env, gw, {alice}, XRP(10'000), {}, Fund::Acct);
|
||||
env.trust(USD(1'000), alice, bob, carol);
|
||||
env.trust(BTC(1'000), alice, bob, carol);
|
||||
env.trust(EUR(1'000), alice, bob, carol);
|
||||
env.close();
|
||||
|
||||
env(pay(gw, alice, BTC(60)));
|
||||
env(pay(gw, bob, BTC(100)));
|
||||
env(pay(gw, bob, USD(100)));
|
||||
env(pay(gw, bob, EUR(50)));
|
||||
env(pay(gw, carol, EUR(1)));
|
||||
env.close();
|
||||
|
||||
// This is multiplath, which generates limited # of offers
|
||||
AMM ammBobBTC_USD(env, bob, BTC(50), USD(50));
|
||||
@@ -2171,13 +2190,16 @@ private:
|
||||
|
||||
Env env(*this, features);
|
||||
env.fund(XRP(10'000), bob, carol, gw);
|
||||
env.close();
|
||||
fund(env, gw, {alice}, XRP(10'000), {}, Fund::Acct);
|
||||
env.trust(USD(1'000), alice, bob, carol);
|
||||
env.trust(EUR(1'000), alice, bob, carol);
|
||||
env.close();
|
||||
|
||||
env(pay(gw, alice, USD(1'000)));
|
||||
env(pay(gw, bob, EUR(1'000)));
|
||||
env(pay(gw, bob, USD(1'000)));
|
||||
env.close();
|
||||
|
||||
// env(offer(bob, USD(1), drops(2)), txflags(tfPassive));
|
||||
AMM ammBob(env, bob, USD(8), XRPAmount{21});
|
||||
@@ -3155,6 +3177,7 @@ private:
|
||||
|
||||
fund(env, gw, {ed}, XRP(100'000'000), {USD(11)});
|
||||
env.fund(XRP(100'000'000), alice, bob, carol, dan);
|
||||
env.close();
|
||||
env.trust(USD(1), bob);
|
||||
env(pay(gw, bob, USD(1)));
|
||||
env.trust(USD(1), dan);
|
||||
@@ -3227,7 +3250,9 @@ private:
|
||||
txflags(tfPartialPayment),
|
||||
sendmax(XRP(5)),
|
||||
ter(tecPATH_PARTIAL));
|
||||
env.require(balance(alice, XRP(9'999.99999)));
|
||||
env.require(balance(
|
||||
alice,
|
||||
drops(10'000'000'000 - env.current()->fees().base.drops())));
|
||||
env.require(balance(bob, XRP(10'000)));
|
||||
}
|
||||
|
||||
@@ -3271,6 +3296,7 @@ private:
|
||||
auto const dan = Account("dan");
|
||||
Env env(*this, features);
|
||||
fund(env, gw, {alice, bob, carol, dan}, XRP(10'000));
|
||||
env.close();
|
||||
env.trust(USD(1'100), bob, carol, dan);
|
||||
env(pay(gw, bob, USD(100)));
|
||||
env(pay(gw, dan, USD(1'100)));
|
||||
@@ -3495,51 +3521,23 @@ private:
|
||||
BEAST_EXPECT(lines[jss::lines][0u][jss::balance] == "100");
|
||||
}
|
||||
|
||||
{
|
||||
// Account with line unfrozen (proving operations normally work)
|
||||
// test: can make Payment on that line
|
||||
env(pay(alice, bob, G1["USD"](1)));
|
||||
// Account with line unfrozen (proving operations normally work)
|
||||
// test: can make Payment on that line
|
||||
env(pay(alice, bob, G1["USD"](1)));
|
||||
|
||||
// test: can receive Payment on that line
|
||||
env(pay(bob, alice, G1["USD"](1)));
|
||||
env.close();
|
||||
}
|
||||
// test: can receive Payment on that line
|
||||
env(pay(bob, alice, G1["USD"](1)));
|
||||
env.close();
|
||||
|
||||
{
|
||||
// Is created via a TrustSet with SetFreeze flag
|
||||
// test: sets LowFreeze | HighFreeze flags
|
||||
env(trust(G1, bob["USD"](0), tfSetFreeze));
|
||||
auto affected = env.meta()->getJson(
|
||||
JsonOptions::none)[sfAffectedNodes.fieldName];
|
||||
if (!BEAST_EXPECT(checkArraySize(affected, 2u)))
|
||||
return;
|
||||
auto ff =
|
||||
affected[1u][sfModifiedNode.fieldName][sfFinalFields.fieldName];
|
||||
BEAST_EXPECT(
|
||||
ff[sfLowLimit.fieldName] ==
|
||||
G1["USD"](0).value().getJson(JsonOptions::none));
|
||||
BEAST_EXPECT(ff[jss::Flags].asUInt() & lsfLowFreeze);
|
||||
BEAST_EXPECT(!(ff[jss::Flags].asUInt() & lsfHighFreeze));
|
||||
env.close();
|
||||
}
|
||||
// Is created via a TrustSet with SetFreeze flag
|
||||
// test: sets LowFreeze | HighFreeze flags
|
||||
env(trust(G1, bob["USD"](0), tfSetFreeze));
|
||||
env.close();
|
||||
|
||||
{
|
||||
// Account with line frozen by issuer
|
||||
// test: can buy more assets on that line
|
||||
env(offer(bob, G1["USD"](5), XRP(25)));
|
||||
auto affected = env.meta()->getJson(
|
||||
JsonOptions::none)[sfAffectedNodes.fieldName];
|
||||
if (!BEAST_EXPECT(checkArraySize(affected, 4u)))
|
||||
return;
|
||||
auto ff =
|
||||
affected[1u][sfModifiedNode.fieldName][sfFinalFields.fieldName];
|
||||
BEAST_EXPECT(
|
||||
ff[sfHighLimit.fieldName] ==
|
||||
bob["USD"](100).value().getJson(JsonOptions::none));
|
||||
auto amt = STAmount{Issue{to_currency("USD"), noAccount()}, -15}
|
||||
.value()
|
||||
.getJson(JsonOptions::none);
|
||||
BEAST_EXPECT(ff[sfBalance.fieldName] == amt);
|
||||
env.close();
|
||||
BEAST_EXPECT(ammAlice.expectBalances(
|
||||
XRP(525), G1["USD"](100), ammAlice.tokens()));
|
||||
@@ -3799,17 +3797,6 @@ private:
|
||||
env(trust(G1, a3am, tfSetFreeze));
|
||||
auto const info = ammA3.ammRpcInfo();
|
||||
BEAST_EXPECT(info[jss::amm][jss::asset2_frozen].asBool());
|
||||
auto affected =
|
||||
env.meta()->getJson(JsonOptions::none)[sfAffectedNodes.fieldName];
|
||||
if (!BEAST_EXPECT(checkArraySize(affected, 2u)))
|
||||
return;
|
||||
auto ff =
|
||||
affected[1u][sfModifiedNode.fieldName][sfFinalFields.fieldName];
|
||||
BEAST_EXPECT(
|
||||
ff[sfHighLimit.fieldName] ==
|
||||
G1["USD"](0).value().getJson(JsonOptions::none));
|
||||
BEAST_EXPECT(!(ff[jss::Flags].asUInt() & lsfLowFreeze));
|
||||
BEAST_EXPECT(ff[jss::Flags].asUInt() & lsfHighFreeze);
|
||||
env.close();
|
||||
|
||||
// test: Can make a payment via the new offer
|
||||
@@ -3822,27 +3809,10 @@ private:
|
||||
// removal buy successful OfferCreate
|
||||
// test: freeze the new offer
|
||||
env(trust(G1, A4["USD"](0), tfSetFreeze));
|
||||
affected =
|
||||
env.meta()->getJson(JsonOptions::none)[sfAffectedNodes.fieldName];
|
||||
if (!BEAST_EXPECT(checkArraySize(affected, 2u)))
|
||||
return;
|
||||
ff = affected[0u][sfModifiedNode.fieldName][sfFinalFields.fieldName];
|
||||
BEAST_EXPECT(
|
||||
ff[sfLowLimit.fieldName] ==
|
||||
G1["USD"](0).value().getJson(JsonOptions::none));
|
||||
BEAST_EXPECT(ff[jss::Flags].asUInt() & lsfLowFreeze);
|
||||
BEAST_EXPECT(!(ff[jss::Flags].asUInt() & lsfHighFreeze));
|
||||
env.close();
|
||||
|
||||
// test: can no longer create a crossing offer
|
||||
env(offer(A2, G1["USD"](999), XRP(999)));
|
||||
affected =
|
||||
env.meta()->getJson(JsonOptions::none)[sfAffectedNodes.fieldName];
|
||||
if (!BEAST_EXPECT(checkArraySize(affected, 8u)))
|
||||
return;
|
||||
auto created = affected[0u][sfCreatedNode.fieldName];
|
||||
BEAST_EXPECT(
|
||||
created[sfNewFields.fieldName][jss::Account] == A2.human());
|
||||
env.close();
|
||||
|
||||
// test: offer was removed by offer_create
|
||||
@@ -3953,12 +3923,14 @@ private:
|
||||
fund(env, gw, {alice, bob}, XRP(10'000));
|
||||
env.trust(USD(1'000), alice, bob);
|
||||
env.trust(EUR(1'000), alice, bob);
|
||||
env.close();
|
||||
fund(
|
||||
env,
|
||||
bob,
|
||||
{alice, gw},
|
||||
{BobUSD(100), BobEUR(100)},
|
||||
Fund::IOUOnly);
|
||||
env.close();
|
||||
|
||||
AMM ammBobXRP_USD(env, bob, XRP(100), BobUSD(100));
|
||||
env(offer(gw, XRP(100), USD(100)), txflags(tfPassive));
|
||||
@@ -4024,10 +3996,12 @@ private:
|
||||
Env env(*this, features);
|
||||
|
||||
env.fund(XRP(10'000), alice, bob, carol, gw);
|
||||
env.close();
|
||||
env.trust(USD(10'000), alice, bob, carol);
|
||||
|
||||
env.close();
|
||||
env(pay(gw, bob, USD(100)));
|
||||
env(pay(gw, alice, USD(100)));
|
||||
env.close();
|
||||
|
||||
AMM ammBob(env, bob, XRP(100), USD(100));
|
||||
|
||||
@@ -4043,6 +4017,7 @@ private:
|
||||
Env env(*this, features);
|
||||
|
||||
env.fund(XRP(10'000), alice, bob, carol, gw);
|
||||
env.close();
|
||||
env.trust(USD(10'000), alice, bob, carol);
|
||||
env.trust(EUR(10'000), alice, bob, carol);
|
||||
env.trust(CNY(10'000), alice, bob, carol);
|
||||
|
||||
Reference in New Issue
Block a user