mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-21 19:45:53 +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:
@@ -1308,14 +1308,15 @@ private:
|
||||
|
||||
// Equal deposit: 1000000 tokens, 10% of the current pool
|
||||
testAMM([&](AMM& ammAlice, Env& env) {
|
||||
auto const baseFee = env.current()->fees().base;
|
||||
ammAlice.deposit(carol, 1'000'000);
|
||||
BEAST_EXPECT(ammAlice.expectBalances(
|
||||
XRP(11'000), USD(11'000), IOUAmount{11'000'000, 0}));
|
||||
// 30,000 less deposited 1,000
|
||||
BEAST_EXPECT(expectLine(env, carol, USD(29'000)));
|
||||
// 30,000 less deposited 1,000 and 10 drops tx fee
|
||||
BEAST_EXPECT(
|
||||
expectLedgerEntryRoot(env, carol, XRPAmount{28'999'999'990}));
|
||||
BEAST_EXPECT(expectLedgerEntryRoot(
|
||||
env, carol, XRPAmount{29'000'000'000 - baseFee}));
|
||||
});
|
||||
|
||||
// equal asset deposit: unit test to exercise the rounding-down of
|
||||
@@ -1630,6 +1631,7 @@ private:
|
||||
env.fund(XRP(30'000), gw, alice, bob);
|
||||
env.close();
|
||||
env(fset(gw, asfRequireAuth));
|
||||
env.close();
|
||||
env(trust(alice, gw["USD"](30'000), 0));
|
||||
env(trust(gw, alice["USD"](0), tfSetfAuth));
|
||||
// Bob trusts Gateway to owe him USD...
|
||||
@@ -2125,6 +2127,7 @@ private:
|
||||
// Equal withdrawal by Carol: 1000000 of tokens, 10% of the current
|
||||
// pool
|
||||
testAMM([&](AMM& ammAlice, Env& env) {
|
||||
auto const baseFee = env.current()->fees().base.drops();
|
||||
// Single deposit of 100000 worth of tokens,
|
||||
// which is 10% of the pool. Carol is LP now.
|
||||
ammAlice.deposit(carol, 1'000'000);
|
||||
@@ -2135,16 +2138,16 @@ private:
|
||||
// 30,000 less deposited 1,000
|
||||
BEAST_EXPECT(expectLine(env, carol, USD(29'000)));
|
||||
// 30,000 less deposited 1,000 and 10 drops tx fee
|
||||
BEAST_EXPECT(
|
||||
expectLedgerEntryRoot(env, carol, XRPAmount{28'999'999'990}));
|
||||
BEAST_EXPECT(expectLedgerEntryRoot(
|
||||
env, carol, XRPAmount{29'000'000'000 - baseFee}));
|
||||
|
||||
// Carol withdraws all tokens
|
||||
ammAlice.withdraw(carol, 1'000'000);
|
||||
BEAST_EXPECT(
|
||||
ammAlice.expectLPTokens(carol, IOUAmount(beast::Zero())));
|
||||
BEAST_EXPECT(expectLine(env, carol, USD(30'000)));
|
||||
BEAST_EXPECT(
|
||||
expectLedgerEntryRoot(env, carol, XRPAmount{29'999'999'980}));
|
||||
BEAST_EXPECT(expectLedgerEntryRoot(
|
||||
env, carol, XRPAmount{30'000'000'000 - 2 * baseFee}));
|
||||
});
|
||||
|
||||
// Equal withdrawal by tokens 1000000, 10%
|
||||
@@ -3291,12 +3294,14 @@ private:
|
||||
// preflight tests
|
||||
{
|
||||
Env env(*this, features);
|
||||
auto const baseFee = env.current()->fees().base;
|
||||
|
||||
fund(env, gw, {alice, bob}, XRP(2'000), {USD(2'000)});
|
||||
AMM amm(env, gw, XRP(1'000), USD(1'010), false, 1'000);
|
||||
Json::Value tx = amm.bid({.account = alice, .bidMin = 500});
|
||||
|
||||
{
|
||||
auto jtx = env.jt(tx, seq(1), fee(10));
|
||||
auto jtx = env.jt(tx, seq(1), fee(baseFee));
|
||||
env.app().config().features.erase(featureAMM);
|
||||
PreflightContext pfctx(
|
||||
env.app(),
|
||||
@@ -3310,7 +3315,7 @@ private:
|
||||
}
|
||||
|
||||
{
|
||||
auto jtx = env.jt(tx, seq(1), fee(10));
|
||||
auto jtx = env.jt(tx, seq(1), fee(baseFee));
|
||||
jtx.jv["TxnSignature"] = "deadbeef";
|
||||
jtx.stx = env.ust(jtx);
|
||||
PreflightContext pfctx(
|
||||
@@ -3324,7 +3329,7 @@ private:
|
||||
}
|
||||
|
||||
{
|
||||
auto jtx = env.jt(tx, seq(1), fee(10));
|
||||
auto jtx = env.jt(tx, seq(1), fee(baseFee));
|
||||
jtx.jv["Asset2"]["currency"] = "XRP";
|
||||
jtx.jv["Asset2"].removeMember("issuer");
|
||||
jtx.stx = env.ust(jtx);
|
||||
@@ -3383,11 +3388,12 @@ private:
|
||||
|
||||
// Can't pay into AMM with escrow.
|
||||
testAMM([&](AMM& ammAlice, Env& env) {
|
||||
auto const baseFee = env.current()->fees().base;
|
||||
env(escrow(carol, ammAlice.ammAccount(), XRP(1)),
|
||||
condition(cb1),
|
||||
finish_time(env.now() + 1s),
|
||||
cancel_time(env.now() + 2s),
|
||||
fee(1'500),
|
||||
fee(baseFee * 150),
|
||||
ter(tecNO_PERMISSION));
|
||||
});
|
||||
|
||||
@@ -3826,11 +3832,14 @@ private:
|
||||
{
|
||||
Env env(*this, features);
|
||||
fund(env, gw, {alice, bob, carol}, XRP(20'000), {USD(2'000)});
|
||||
env.close();
|
||||
env(offer(bob, XRP(50), USD(150)), txflags(tfPassive));
|
||||
env.close();
|
||||
AMM ammAlice(env, alice, XRP(1'000), USD(1'050));
|
||||
env(pay(alice, carol, USD(200)),
|
||||
sendmax(XRP(200)),
|
||||
txflags(tfPartialPayment));
|
||||
env.close();
|
||||
BEAST_EXPECT(ammAlice.expectBalances(
|
||||
XRP(1'050), USD(1'000), ammAlice.tokens()));
|
||||
BEAST_EXPECT(expectLine(env, carol, USD(2'200)));
|
||||
@@ -4476,6 +4485,7 @@ private:
|
||||
|
||||
// Offer crossing with AMM LPTokens and XRP.
|
||||
testAMM([&](AMM& ammAlice, Env& env) {
|
||||
auto const baseFee = env.current()->fees().base.drops();
|
||||
auto const token1 = ammAlice.lptIssue();
|
||||
auto priceXRP = withdrawByTokens(
|
||||
STAmount{XRPAmount{10'000'000'000}},
|
||||
@@ -4501,7 +4511,9 @@ private:
|
||||
env(ammAlice.bid({.account = carol, .bidMin = 100}));
|
||||
BEAST_EXPECT(ammAlice.expectLPTokens(carol, IOUAmount{4'999'900}));
|
||||
BEAST_EXPECT(ammAlice.expectAuctionSlot(0, 0, IOUAmount{100}));
|
||||
BEAST_EXPECT(accountBalance(env, carol) == "22499999960");
|
||||
BEAST_EXPECT(
|
||||
accountBalance(env, carol) ==
|
||||
std::to_string(22500000000 - 4 * baseFee));
|
||||
priceXRP = withdrawByTokens(
|
||||
STAmount{XRPAmount{10'000'000'000}},
|
||||
STAmount{token1, 9'999'900},
|
||||
@@ -4509,7 +4521,9 @@ private:
|
||||
0);
|
||||
// Carol withdraws
|
||||
ammAlice.withdrawAll(carol, XRP(0));
|
||||
BEAST_EXPECT(accountBalance(env, carol) == "29999949949");
|
||||
BEAST_EXPECT(
|
||||
accountBalance(env, carol) ==
|
||||
std::to_string(29999949999 - 5 * baseFee));
|
||||
BEAST_EXPECT(ammAlice.expectBalances(
|
||||
XRPAmount{10'000'000'000} - priceXRP,
|
||||
USD(10'000),
|
||||
@@ -5223,7 +5237,10 @@ private:
|
||||
BEAST_EXPECT(expectLine(env, alice, USD(30'000)));
|
||||
// alice XRP balance is 30,000initial - 50 ammcreate fee -
|
||||
// 10drops fee
|
||||
BEAST_EXPECT(accountBalance(env, alice) == "29949999990");
|
||||
BEAST_EXPECT(
|
||||
accountBalance(env, alice) ==
|
||||
std::to_string(
|
||||
29950000000 - env.current()->fees().base.drops()));
|
||||
},
|
||||
std::nullopt,
|
||||
0,
|
||||
@@ -5279,13 +5296,19 @@ private:
|
||||
BEAST_EXPECT(accountBalance(env, simon) == xrpBalance);
|
||||
BEAST_EXPECT(accountBalance(env, chris) == xrpBalance);
|
||||
BEAST_EXPECT(accountBalance(env, dan) == xrpBalance);
|
||||
|
||||
auto const baseFee = env.current()->fees().base.drops();
|
||||
// 30,000 initial - (deposit+withdraw) * 10
|
||||
BEAST_EXPECT(accountBalance(env, carol) == "29999999800");
|
||||
BEAST_EXPECT(
|
||||
accountBalance(env, carol) ==
|
||||
std::to_string(30000000000 - 20 * baseFee));
|
||||
BEAST_EXPECT(accountBalance(env, ed) == xrpBalance);
|
||||
BEAST_EXPECT(accountBalance(env, paul) == xrpBalance);
|
||||
BEAST_EXPECT(accountBalance(env, nataly) == xrpBalance);
|
||||
// 30,000 initial - 50 ammcreate fee - 10drops withdraw fee
|
||||
BEAST_EXPECT(accountBalance(env, alice) == "29949999990");
|
||||
BEAST_EXPECT(
|
||||
accountBalance(env, alice) ==
|
||||
std::to_string(29950000000 - baseFee));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user