mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-22 12:05:53 +00:00
Add Scale to SingleAssetVault (#5652)
* Add and Scale to VaultCreate * Add round-trip calculation to VaultDeposit VaultWithdraw and VaultClawback * Implement Number::truncate() for VaultClawback * Add rounding to DepositWithdraw * Disallow zero shares withdraw or deposit with tecPRECISION_LOSS * Return tecPATH_DRY on overflow when converting shares/assets * Remove empty shares MPToken in clawback or withdraw (except for vault owner) * Implicitly create shares MPToken for vault owner in VaultCreate * Review feedback: defensive checks in shares/assets calculations --------- Co-authored-by: Ed Hennis <ed@ripple.com>
This commit is contained in:
@@ -720,6 +720,30 @@ public:
|
||||
BEAST_EXPECT(res2 == STAmount{7518784});
|
||||
}
|
||||
|
||||
void
|
||||
test_truncate()
|
||||
{
|
||||
BEAST_EXPECT(Number(25, +1).truncate() == Number(250, 0));
|
||||
BEAST_EXPECT(Number(25, 0).truncate() == Number(25, 0));
|
||||
BEAST_EXPECT(Number(25, -1).truncate() == Number(2, 0));
|
||||
BEAST_EXPECT(Number(25, -2).truncate() == Number(0, 0));
|
||||
BEAST_EXPECT(Number(99, -2).truncate() == Number(0, 0));
|
||||
|
||||
BEAST_EXPECT(Number(-25, +1).truncate() == Number(-250, 0));
|
||||
BEAST_EXPECT(Number(-25, 0).truncate() == Number(-25, 0));
|
||||
BEAST_EXPECT(Number(-25, -1).truncate() == Number(-2, 0));
|
||||
BEAST_EXPECT(Number(-25, -2).truncate() == Number(0, 0));
|
||||
BEAST_EXPECT(Number(-99, -2).truncate() == Number(0, 0));
|
||||
|
||||
BEAST_EXPECT(Number(0, 0).truncate() == Number(0, 0));
|
||||
BEAST_EXPECT(Number(0, 30000).truncate() == Number(0, 0));
|
||||
BEAST_EXPECT(Number(0, -30000).truncate() == Number(0, 0));
|
||||
BEAST_EXPECT(Number(100, -30000).truncate() == Number(0, 0));
|
||||
BEAST_EXPECT(Number(100, -30000).truncate() == Number(0, 0));
|
||||
BEAST_EXPECT(Number(-100, -30000).truncate() == Number(0, 0));
|
||||
BEAST_EXPECT(Number(-100, -30000).truncate() == Number(0, 0));
|
||||
}
|
||||
|
||||
void
|
||||
run() override
|
||||
{
|
||||
@@ -740,6 +764,7 @@ public:
|
||||
test_stream();
|
||||
test_inc_dec();
|
||||
test_toSTAmount();
|
||||
test_truncate();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user