diff --git a/src/ripple/app/tx/impl/PayChan.cpp b/src/ripple/app/tx/impl/PayChan.cpp index 1d8a6ebc2..a09c4f0b7 100644 --- a/src/ripple/app/tx/impl/PayChan.cpp +++ b/src/ripple/app/tx/impl/PayChan.cpp @@ -768,7 +768,7 @@ PayChanClaim::doApply() // no reason to do a dry run first if (!ctx_.view().rules().enabled(featurePaychanAndEscrowForTokens)) return temDISABLED; - + auto sleSrcAcc = ctx_.view().peek(keylet::account(src)); TER result = trustTransferLockedBalance( ctx_.view(), diff --git a/src/ripple/ledger/View.h b/src/ripple/ledger/View.h index 53d1b886f..8e96b4728 100644 --- a/src/ripple/ledger/View.h +++ b/src/ripple/ledger/View.h @@ -835,11 +835,7 @@ trustTransferLockedBalance( { // compute transfer fee, if any auto const xferFee = amount.value() - - divideRound( - amount, - lXferRate, - amount.issue(), - true); + divideRound(amount, lXferRate, amount.issue(), true); // compute balance to transfer dstAmt = amount.value() - xferFee; } @@ -934,7 +930,7 @@ trustTransferLockedBalance( } } } - + // check for a destination line Keylet klDstLine = keylet::line(dstAccID, issuerAccID, currency); SLEPtr sleDstLine = peek(klDstLine); @@ -955,7 +951,7 @@ trustTransferLockedBalance( if (std::uint32_t const ownerCount = {sleDstAcc->at(sfOwnerCount)}; dstBalanceDrops < view.fees().accountReserve(ownerCount + 1)) return tecNO_LINE_INSUF_RESERVE; - + // create destination trust line if constexpr (!dryRun) { @@ -988,12 +984,12 @@ trustTransferLockedBalance( // checked NoRipple and Freeze flags in trustTransferAllowed // check the limit - STAmount dstLimit = - dstHigh ? (*sleDstLine)[sfHighLimit] : (*sleDstLine)[sfLowLimit]; + STAmount dstLimit = dstHigh ? (*sleDstLine)[sfHighLimit] + : (*sleDstLine)[sfLowLimit]; // get prior balance - STAmount priorBalance = - dstHigh ? -((*sleDstLine)[sfBalance]) : (*sleDstLine)[sfBalance]; + STAmount priorBalance = dstHigh ? -((*sleDstLine)[sfBalance]) + : (*sleDstLine)[sfBalance]; // combine prior with dest amount for final STAmount finalBalance = priorBalance + dstAmt; @@ -1002,15 +998,17 @@ trustTransferLockedBalance( if (finalBalance < priorBalance) { JLOG(j.warn()) << "trustTransferLockedBalance resulted in a " - "lower/equal final balance on dest line"; + "lower/equal final balance on dest line"; return tecINTERNAL; } - // if final is more than dest limit and tx acct is not dest acct - fail + // if final is more than dest limit and tx acct is not dest acct - + // fail if (finalBalance > dstLimit && actingAccID != dstAccID) { - JLOG(j.trace()) << "trustTransferLockedBalance would increase dest " - "line above limit without permission"; + JLOG(j.trace()) + << "trustTransferLockedBalance would increase dest " + "line above limit without permission"; return tecPATH_DRY; } @@ -1020,7 +1018,7 @@ trustTransferLockedBalance( // compute final balance to send - reverse sign for high dest finalBalance = dstHigh ? -finalBalance : finalBalance; - + // if not dry run - set dst line field if constexpr (!dryRun) sleDstLine->setFieldAmount(sfBalance, finalBalance); diff --git a/src/ripple/ledger/impl/View.cpp b/src/ripple/ledger/impl/View.cpp index 8923b451d..5234b1e25 100644 --- a/src/ripple/ledger/impl/View.cpp +++ b/src/ripple/ledger/impl/View.cpp @@ -257,12 +257,12 @@ accountHolds( // If tokens can be escrowed then they can be locked in the trustline // which means we must never spend them until the escrow is released. - if (view.rules().enabled(featurePaychanAndEscrowForTokens) - && sle->isFieldPresent(sfLockedBalance)) + if (view.rules().enabled(featurePaychanAndEscrowForTokens) && + sle->isFieldPresent(sfLockedBalance)) { STAmount lockedBalance = sle->getFieldAmount(sfLockedBalance); - STAmount spendableBalance = amount - - (account > issuer ? -lockedBalance : lockedBalance); + STAmount spendableBalance = + amount - (account > issuer ? -lockedBalance : lockedBalance); // RH NOTE: this is defensively programmed, it should never fire // if something bad does happen the trustline acts as a frozen line. @@ -912,7 +912,8 @@ trustDelete( return tesSUCCESS; } -bool isTrustDefault( +bool +isTrustDefault( std::shared_ptr const& acc, std::shared_ptr const& line) { @@ -921,7 +922,7 @@ bool isTrustDefault( uint32_t tlFlags = line->getFieldU32(sfFlags); AccountID highAccID = line->getFieldAmount(sfHighLimit).issue().account; - AccountID lowAccID = line->getFieldAmount(sfLowLimit ).issue().account; + AccountID lowAccID = line->getFieldAmount(sfLowLimit).issue().account; AccountID accID = acc->getAccountID(sfAccount); @@ -931,8 +932,8 @@ bool isTrustDefault( uint32_t acFlags = line->getFieldU32(sfFlags); - const auto fNoRipple {high ? lsfHighNoRipple : lsfLowNoRipple}; - const auto fFreeze {high ? lsfHighFreeze : lsfLowFreeze}; + const auto fNoRipple{high ? lsfHighNoRipple : lsfLowNoRipple}; + const auto fFreeze{high ? lsfHighFreeze : lsfLowFreeze}; if (tlFlags & fFreeze) return false; @@ -949,17 +950,19 @@ bool isTrustDefault( if (line->getFieldAmount(high ? sfHighLimit : sfLowLimit) != beast::zero) return false; - uint32_t qualityIn = line->getFieldU32(high ? sfHighQualityIn : sfLowQualityIn); - uint32_t qualityOut = line->getFieldU32(high ? sfHighQualityOut : sfLowQualityOut); + uint32_t qualityIn = + line->getFieldU32(high ? sfHighQualityIn : sfLowQualityIn); + uint32_t qualityOut = + line->getFieldU32(high ? sfHighQualityOut : sfLowQualityOut); - if (qualityIn && qualityIn != QUALITY_ONE) + if (qualityIn && qualityIn != QUALITY_ONE) return false; if (qualityOut && qualityOut != QUALITY_ONE) return false; return true; -} +} TER offerDelete(ApplyView& view, std::shared_ptr const& sle, beast::Journal j) diff --git a/src/ripple/net/impl/RPCCall.cpp b/src/ripple/net/impl/RPCCall.cpp index e04ec363a..e3204a267 100644 --- a/src/ripple/net/impl/RPCCall.cpp +++ b/src/ripple/net/impl/RPCCall.cpp @@ -154,7 +154,8 @@ private: static Json::Value jvParseSTAmount(std::string const& strIC) { - static boost::regex reCurIss("\\`(0|[1-9][0-9]*)(?:/([[:alpha:]]{3}))(?:/(.+))?\\'"); + static boost::regex reCurIss( + "\\`(0|[1-9][0-9]*)(?:/([[:alpha:]]{3}))(?:/(.+))?\\'"); boost::smatch icMatch; @@ -820,7 +821,8 @@ private: return parseAccountRaw2(jvParams, jss::destination_account); } - // channel_authorize: [] + // channel_authorize: [] Json::Value parseChannelAuthorize(Json::Value const& jvParams) { @@ -857,14 +859,16 @@ private: // validate amount string | json if (!jvParams[index].isString()) return rpcError(rpcCHANNEL_AMT_MALFORMED); - + // parse string - Json::Value amountJson = jvParseSTAmount(jvParams[index].asString()); - if (!amountJson) { + Json::Value amountJson = + jvParseSTAmount(jvParams[index].asString()); + if (!amountJson) + { // amount is string if (!to_uint64(jvParams[index].asString())) return rpcError(rpcCHANNEL_AMT_MALFORMED); - + jvRequest[jss::amount] = jvParams[index].asString(); } else @@ -874,7 +878,7 @@ private: bool isAmount = amountFromJsonNoThrow(amount, amountJson); if (!isAmount) return rpcError(rpcCHANNEL_AMT_MALFORMED); - + jvRequest[jss::amount] = amountJson; } } @@ -910,11 +914,12 @@ private: return rpcError(rpcCHANNEL_AMT_MALFORMED); // parse string Json::Value amountJson = jvParseSTAmount(jvParams[2u].asString()); - if (!amountJson) { + if (!amountJson) + { // amount is string if (!to_uint64(jvParams[2u].asString())) return rpcError(rpcCHANNEL_AMT_MALFORMED); - + jvRequest[jss::amount] = jvParams[2u].asString(); } else @@ -924,7 +929,7 @@ private: bool isAmount = amountFromJsonNoThrow(amount, amountJson); if (!isAmount) return rpcError(rpcCHANNEL_AMT_MALFORMED); - + jvRequest[jss::amount] = amountJson; } } diff --git a/src/ripple/protocol/PayChan.h b/src/ripple/protocol/PayChan.h index beae88883..f3d48556f 100644 --- a/src/ripple/protocol/PayChan.h +++ b/src/ripple/protocol/PayChan.h @@ -53,7 +53,8 @@ serializePayChanAuthorization( else if (amt.signum() == -1) // 512 = not native msg.add64( amt.mantissa() | - (static_cast(amt.exponent() + 512 + 97) << (64 - 10))); + (static_cast(amt.exponent() + 512 + 97) + << (64 - 10))); else // 256 = positive msg.add64( amt.mantissa() | diff --git a/src/ripple/protocol/STAmount.h b/src/ripple/protocol/STAmount.h index 82dd45604..77981b6a3 100644 --- a/src/ripple/protocol/STAmount.h +++ b/src/ripple/protocol/STAmount.h @@ -524,9 +524,10 @@ isFakeXRP(STAmount const& amount) return false; return isFakeXRP(amount.issue().currency); -} +} -/** returns true iff adding or subtracting results in less than or equal to 0.01% precision loss **/ +/** returns true iff adding or subtracting results in less than or equal to + * 0.01% precision loss **/ inline bool isAddable(STAmount const& amt1, STAmount const& amt2) { @@ -540,13 +541,13 @@ isAddable(STAmount const& amt1, STAmount const& amt2) { XRPAmount A = (amt1.signum() == -1 ? -(amt1.xrp()) : amt1.xrp()); XRPAmount B = (amt2.signum() == -1 ? -(amt2.xrp()) : amt2.xrp()); - + XRPAmount finalAmt = A + B; return (finalAmt >= A && finalAmt >= B); } - static const STAmount one {IOUAmount{1, 0}, noIssue()}; - static const STAmount maxLoss {IOUAmount{1, -4}, noIssue()}; + static const STAmount one{IOUAmount{1, 0}, noIssue()}; + static const STAmount maxLoss{IOUAmount{1, -4}, noIssue()}; STAmount A = amt1; STAmount B = amt2; @@ -563,10 +564,10 @@ isAddable(STAmount const& amt1, STAmount const& amt2) STAmount lhs = divide((A - B) + B, A, noIssue()) - one; STAmount rhs = divide((B - A) + A, B, noIssue()) - one; - return ((rhs.negative() ? -rhs : rhs) + (lhs.negative() ? -lhs : lhs)) <= maxLoss; + return ((rhs.negative() ? -rhs : rhs) + (lhs.negative() ? -lhs : lhs)) <= + maxLoss; } - // Since `canonicalize` does not have access to a ledger, this is needed to put // the low-level routine stAmountCanonicalize on an amendment switch. Only // transactions need to use this switchover. Outside of a transaction it's safe diff --git a/src/ripple/protocol/impl/Indexes.cpp b/src/ripple/protocol/impl/Indexes.cpp index 2eb3d5d3f..bdc1895c4 100644 --- a/src/ripple/protocol/impl/Indexes.cpp +++ b/src/ripple/protocol/impl/Indexes.cpp @@ -324,8 +324,7 @@ Keylet payChan(AccountID const& src, AccountID const& dst, std::uint32_t seq) noexcept { return { - ltPAYCHAN, - indexHash(LedgerNameSpace::PAYMENT_CHANNEL, src, dst, seq)}; + ltPAYCHAN, indexHash(LedgerNameSpace::PAYMENT_CHANNEL, src, dst, seq)}; } Keylet diff --git a/src/ripple/rpc/handlers/AccountChannels.cpp b/src/ripple/rpc/handlers/AccountChannels.cpp index 76750a658..25662f6ee 100644 --- a/src/ripple/rpc/handlers/AccountChannels.cpp +++ b/src/ripple/rpc/handlers/AccountChannels.cpp @@ -183,8 +183,7 @@ doAccountChannels(RPC::JsonContext& context) nextHint = RPC::getStartHint(sleCur, visitData.accountID); } - if (count <= limit && - (*sleCur)[sfAccount] == accountID && + if (count <= limit && (*sleCur)[sfAccount] == accountID && (!visitData.hasDst || visitData.raDstAccount == (*sleCur)[sfDestination])) { diff --git a/src/ripple/rpc/handlers/AccountLines.cpp b/src/ripple/rpc/handlers/AccountLines.cpp index a1c958f71..f4dc6902c 100644 --- a/src/ripple/rpc/handlers/AccountLines.cpp +++ b/src/ripple/rpc/handlers/AccountLines.cpp @@ -61,8 +61,7 @@ addLine(Json::Value& jsonLines, RPCTrustLine const& line) jPeer[jss::balance] = saBalance.getText(); if (saLockedBalance) - jPeer[jss::locked_balance] = - saLockedBalance->negative() + jPeer[jss::locked_balance] = saLockedBalance->negative() ? (-(*saLockedBalance)).getText() : saLockedBalance->getText(); diff --git a/src/ripple/rpc/handlers/PayChanClaim.cpp b/src/ripple/rpc/handlers/PayChanClaim.cpp index ccc82d1f7..eec93c156 100644 --- a/src/ripple/rpc/handlers/PayChanClaim.cpp +++ b/src/ripple/rpc/handlers/PayChanClaim.cpp @@ -70,9 +70,10 @@ doChannelAuthorize(RPC::JsonContext& context) if (params[jss::amount].isString()) { - std::optional const optDrops = params[jss::amount].isString() - ? to_uint64(params[jss::amount].asString()) - : std::nullopt; + std::optional const optDrops = + params[jss::amount].isString() + ? to_uint64(params[jss::amount].asString()) + : std::nullopt; if (!optDrops) return rpcError(rpcCHANNEL_AMT_MALFORMED); @@ -92,8 +93,7 @@ doChannelAuthorize(RPC::JsonContext& context) channelId, amount.iou(), amount.getCurrency(), - amount.getIssuer() - ); + amount.getIssuer()); } try @@ -152,9 +152,10 @@ doChannelVerify(RPC::JsonContext& context) if (params[jss::amount].isString()) { - std::optional const optDrops = params[jss::amount].isString() - ? to_uint64(params[jss::amount].asString()) - : std::nullopt; + std::optional const optDrops = + params[jss::amount].isString() + ? to_uint64(params[jss::amount].asString()) + : std::nullopt; if (!optDrops) return rpcError(rpcCHANNEL_AMT_MALFORMED); @@ -175,8 +176,7 @@ doChannelVerify(RPC::JsonContext& context) channelId, amount.iou(), amount.getCurrency(), - amount.getIssuer() - ); + amount.getIssuer()); } auto sig = strUnHex(params[jss::signature].asString()); diff --git a/src/test/app/Escrow_test.cpp b/src/test/app/Escrow_test.cpp index 639d5fcac..6728977c0 100644 --- a/src/test/app/Escrow_test.cpp +++ b/src/test/app/Escrow_test.cpp @@ -3519,7 +3519,7 @@ struct Escrow_test : public beast::unit_test::suite auto const dst = Account("bob0"); auto const gw = Account{"gw0"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, dst, gw); env.close(); @@ -3543,16 +3543,18 @@ struct Escrow_test : public beast::unit_test::suite // dst can finish escrow auto const preSrc = lineBalance(env, src, gw, USD); auto const preDst = lineBalance(env, dst, gw, USD); - + env(finish(dst, src, seq1), condition(cb1), fulfillment(fb1), fee(1500)); env.close(); - + auto postLocked = lockedAmount(env, src, gw, USD); - BEAST_EXPECT(lineBalance(env, src, gw, USD) == preSrc.value() + delta); - BEAST_EXPECT(lineBalance(env, dst, gw, USD) == preDst.value() - delta); + BEAST_EXPECT( + lineBalance(env, src, gw, USD) == preSrc.value() + delta); + BEAST_EXPECT( + lineBalance(env, dst, gw, USD) == preDst.value() - delta); BEAST_EXPECT(preLocked == postLocked - delta); } // src < dst @@ -3564,7 +3566,7 @@ struct Escrow_test : public beast::unit_test::suite auto const dst = Account("dan1"); auto const gw = Account{"gw1"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, dst, gw); env.close(); @@ -3588,16 +3590,18 @@ struct Escrow_test : public beast::unit_test::suite // dst can finish escrow auto const preSrc = lineBalance(env, src, gw, USD); auto const preDst = lineBalance(env, dst, gw, USD); - + env(finish(dst, src, seq1), condition(cb1), fulfillment(fb1), fee(1500)); env.close(); - + auto postLocked = lockedAmount(env, src, gw, USD); - BEAST_EXPECT(lineBalance(env, src, gw, USD) == preSrc.value() - delta); - BEAST_EXPECT(lineBalance(env, dst, gw, USD) == preDst.value() + delta); + BEAST_EXPECT( + lineBalance(env, src, gw, USD) == preSrc.value() - delta); + BEAST_EXPECT( + lineBalance(env, dst, gw, USD) == preDst.value() + delta); BEAST_EXPECT(preLocked == postLocked + delta); } // dst > src @@ -3609,7 +3613,7 @@ struct Escrow_test : public beast::unit_test::suite auto const dst = Account("alice2"); auto const gw = Account{"gw0"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, dst, gw); env.close(); @@ -3633,16 +3637,18 @@ struct Escrow_test : public beast::unit_test::suite // dst can finish escrow auto const preSrc = lineBalance(env, src, gw, USD); auto const preDst = lineBalance(env, dst, gw, USD); - + env(finish(dst, src, seq1), condition(cb1), fulfillment(fb1), fee(1500)); env.close(); - + auto postLocked = lockedAmount(env, src, gw, USD); - BEAST_EXPECT(lineBalance(env, src, gw, USD) == preSrc.value() + delta); - BEAST_EXPECT(lineBalance(env, dst, gw, USD)== preDst.value() - delta); + BEAST_EXPECT( + lineBalance(env, src, gw, USD) == preSrc.value() + delta); + BEAST_EXPECT( + lineBalance(env, dst, gw, USD) == preDst.value() - delta); BEAST_EXPECT(preLocked == postLocked - delta); } // dst < src @@ -3654,7 +3660,7 @@ struct Escrow_test : public beast::unit_test::suite auto const dst = Account("carol0"); auto const gw = Account{"gw1"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, dst, gw); env.close(); @@ -3678,16 +3684,18 @@ struct Escrow_test : public beast::unit_test::suite // dst can finish escrow auto const preSrc = lineBalance(env, src, gw, USD); auto const preDst = lineBalance(env, dst, gw, USD); - + env(finish(dst, src, seq1), condition(cb1), fulfillment(fb1), fee(1500)); env.close(); - + auto postLocked = lockedAmount(env, src, gw, USD); - BEAST_EXPECT(lineBalance(env, src, gw, USD) == preSrc.value() - delta); - BEAST_EXPECT(lineBalance(env, dst, gw, USD) == preDst.value() + delta); + BEAST_EXPECT( + lineBalance(env, src, gw, USD) == preSrc.value() - delta); + BEAST_EXPECT( + lineBalance(env, dst, gw, USD) == preDst.value() + delta); BEAST_EXPECT(preLocked == postLocked + delta); } // src > dst @@ -3699,7 +3707,7 @@ struct Escrow_test : public beast::unit_test::suite auto const dst = Account("bob0"); auto const gw = Account{"gw0"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, dst, gw); env.close(); @@ -3724,16 +3732,18 @@ struct Escrow_test : public beast::unit_test::suite // dst can finish escrow auto const preSrc = lineBalance(env, src, gw, USD); auto const preDst = lineBalance(env, dst, gw, USD); - + env(finish(dst, src, seq1), condition(cb1), fulfillment(fb1), fee(1500)); env.close(); - + auto postLocked = lockedAmount(env, src, gw, USD); - BEAST_EXPECT(lineBalance(env, src, gw, USD) == preSrc.value() + delta); - BEAST_EXPECT(lineBalance(env, dst, gw, USD) == preDst.value() - delta); + BEAST_EXPECT( + lineBalance(env, src, gw, USD) == preSrc.value() + delta); + BEAST_EXPECT( + lineBalance(env, dst, gw, USD) == preDst.value() - delta); BEAST_EXPECT(preLocked == postLocked - delta); } // src < dst @@ -3745,7 +3755,7 @@ struct Escrow_test : public beast::unit_test::suite auto const dst = Account("dan1"); auto const gw = Account{"gw1"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, dst, gw); env.close(); @@ -3770,16 +3780,18 @@ struct Escrow_test : public beast::unit_test::suite // dst can finish escrow auto const preSrc = lineBalance(env, src, gw, USD); auto const preDst = lineBalance(env, dst, gw, USD); - + env(finish(dst, src, seq1), condition(cb1), fulfillment(fb1), fee(1500)); env.close(); - + auto postLocked = lockedAmount(env, src, gw, USD); - BEAST_EXPECT(lineBalance(env, src, gw, USD) == preSrc.value() - delta); - BEAST_EXPECT(lineBalance(env, dst, gw, USD) == preDst.value() + delta); + BEAST_EXPECT( + lineBalance(env, src, gw, USD) == preSrc.value() - delta); + BEAST_EXPECT( + lineBalance(env, dst, gw, USD) == preDst.value() + delta); BEAST_EXPECT(preLocked == postLocked + delta); } // dst > src @@ -3791,7 +3803,7 @@ struct Escrow_test : public beast::unit_test::suite auto const dst = Account("alice2"); auto const gw = Account{"gw0"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, dst, gw); env.close(); @@ -3816,16 +3828,18 @@ struct Escrow_test : public beast::unit_test::suite // dst can finish escrow auto const preSrc = lineBalance(env, src, gw, USD); auto const preDst = lineBalance(env, dst, gw, USD); - + env(finish(dst, src, seq1), condition(cb1), fulfillment(fb1), fee(1500)); env.close(); - + auto postLocked = lockedAmount(env, src, gw, USD); - BEAST_EXPECT(lineBalance(env, src, gw, USD) == preSrc.value() + delta); - BEAST_EXPECT(lineBalance(env, dst, gw, USD) == preDst.value() - delta); + BEAST_EXPECT( + lineBalance(env, src, gw, USD) == preSrc.value() + delta); + BEAST_EXPECT( + lineBalance(env, dst, gw, USD) == preDst.value() - delta); BEAST_EXPECT(preLocked == postLocked - delta); } // dst < src @@ -3837,7 +3851,7 @@ struct Escrow_test : public beast::unit_test::suite auto const dst = Account("carol0"); auto const gw = Account{"gw1"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, dst, gw); env.close(); @@ -3862,16 +3876,18 @@ struct Escrow_test : public beast::unit_test::suite // dst can finish escrow auto const preSrc = lineBalance(env, src, gw, USD); auto const preDst = lineBalance(env, dst, gw, USD); - + env(finish(dst, src, seq1), condition(cb1), fulfillment(fb1), fee(1500)); env.close(); - + auto postLocked = lockedAmount(env, src, gw, USD); - BEAST_EXPECT(lineBalance(env, src, gw, USD) == preSrc.value() - delta); - BEAST_EXPECT(lineBalance(env, dst, gw, USD) == preDst.value() + delta); + BEAST_EXPECT( + lineBalance(env, src, gw, USD) == preSrc.value() - delta); + BEAST_EXPECT( + lineBalance(env, dst, gw, USD) == preDst.value() + delta); BEAST_EXPECT(preLocked == postLocked + delta); } } @@ -3922,7 +3938,7 @@ struct Escrow_test : public beast::unit_test::suite auto const src = Account("carol0"); auto const gw = Account{"gw1"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, gw); env.close(); @@ -3953,7 +3969,7 @@ struct Escrow_test : public beast::unit_test::suite auto const src = Account("alice2"); auto const gw = Account{"gw0"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, gw); env.close(); @@ -3984,7 +4000,7 @@ struct Escrow_test : public beast::unit_test::suite auto const src = Account("carol0"); auto const gw = Account{"gw1"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, gw); env.close(); @@ -4050,7 +4066,7 @@ struct Escrow_test : public beast::unit_test::suite auto const src = Account("carol0"); auto const gw = Account{"gw1"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, gw); env.close(); @@ -4085,7 +4101,7 @@ struct Escrow_test : public beast::unit_test::suite auto const src = Account("alice2"); auto const gw = Account{"gw0"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, gw); env.close(); @@ -4120,7 +4136,7 @@ struct Escrow_test : public beast::unit_test::suite auto const src = Account("carol0"); auto const gw = Account{"gw1"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, gw); env.close(); @@ -4187,7 +4203,7 @@ struct Escrow_test : public beast::unit_test::suite auto const transferRate = escrowRate(env, alice, seq1); BEAST_EXPECT( transferRate.value == std::uint32_t(1000000000 * 1.25)); - + // bob can finish escrow env(finish(bob, alice, seq1), condition(cb1), @@ -4211,7 +4227,7 @@ struct Escrow_test : public beast::unit_test::suite env(pay(gw, alice, USD(10000))); env(pay(gw, bob, USD(10000))); env.close(); - + // alice can create escrow w/ xfer rate auto const preAlice = env.balance(alice, USD.issue()); auto const seq1 = env.seq(alice); @@ -4252,7 +4268,7 @@ struct Escrow_test : public beast::unit_test::suite env(pay(gw, alice, USD(10000))); env(pay(gw, bob, USD(10000))); env.close(); - + // alice can create escrow w/ xfer rate auto const preAlice = env.balance(alice, USD.issue()); auto const seq1 = env.seq(alice); @@ -4395,7 +4411,7 @@ struct Escrow_test : public beast::unit_test::suite auto const carol = Account("carol"); auto const gw = Account{"gateway"}; auto const USD = gw["USD"]; - + // test Global Freeze { Env env{*this, features}; @@ -4425,7 +4441,7 @@ struct Escrow_test : public beast::unit_test::suite // clear global freeze env(fclear(gw, asfGlobalFreeze)); env.close(); - + // create escrow success seq1 = env.seq(alice); env(escrow(alice, bob, delta), @@ -4473,7 +4489,7 @@ struct Escrow_test : public beast::unit_test::suite // set freeze on alice trustline env(trust(gw, USD(10000), alice, tfSetFreeze)); env.close(); - + // setup transaction auto seq1 = env.seq(alice); auto const delta = USD(125); @@ -4497,11 +4513,11 @@ struct Escrow_test : public beast::unit_test::suite finish_time(env.now() + 1s), fee(1500)); env.close(); - + // set freeze on bob trustline env(trust(gw, USD(10000), bob, tfSetFreeze)); env.close(); - + // bob finish escrow fails - frozen trustline env(finish(bob, alice, seq1), condition(cb1), @@ -4569,14 +4585,14 @@ struct Escrow_test : public beast::unit_test::suite env(pay(gw, alice, USD(10000))); env(pay(gw, bob, USD(10000))); env.close(); - + auto const delta = USD(1000); env(escrow(alice, bob, delta), condition(cb1), finish_time(env.now() + 1s), fee(1500)); env.close(); - + BEAST_EXPECT(-lockedAmount(env, alice, gw, USD) == delta); env(escrow(alice, bob, USD(10000)), condition(cb1), @@ -4614,14 +4630,14 @@ struct Escrow_test : public beast::unit_test::suite // setup tx auto const seq1 = env.seq(alice); auto const delta = USD(10000000000000000); - + // create escrow success env(escrow(alice, bob, delta), condition(cb1), finish_time(env.now() + 1s), fee(1500)); env.close(); - + // create escrow fails - precision loss env(escrow(alice, bob, USD(1)), condition(cb1), @@ -4629,7 +4645,7 @@ struct Escrow_test : public beast::unit_test::suite fee(1500), ter(tecPRECISION_LOSS)); env.close(); - + // bob finish escrow success env(finish(bob, alice, seq1), condition(cb1), @@ -4679,7 +4695,7 @@ struct Escrow_test : public beast::unit_test::suite fee(1500), ter(tecPRECISION_LOSS)); env.close(); - + auto const seq1 = env.seq(alice); // alice can create escrow for 1000 token env(escrow(alice, bob, USD(1000)), diff --git a/src/test/app/PayChan_test.cpp b/src/test/app/PayChan_test.cpp index afcb95587..fd5a94b0f 100644 --- a/src/test/app/PayChan_test.cpp +++ b/src/test/app/PayChan_test.cpp @@ -4676,7 +4676,7 @@ struct PayChan_test : public beast::unit_test::suite auto const dst = Account("bob0"); auto const gw = Account{"gw0"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, dst, gw); env.close(); @@ -4724,7 +4724,7 @@ struct PayChan_test : public beast::unit_test::suite auto const dst = Account("dan1"); auto const gw = Account{"gw1"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, dst, gw); env.close(); @@ -4772,7 +4772,7 @@ struct PayChan_test : public beast::unit_test::suite auto const dst = Account("alice2"); auto const gw = Account{"gw0"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, dst, gw); env.close(); @@ -4820,7 +4820,7 @@ struct PayChan_test : public beast::unit_test::suite auto const dst = Account("carol0"); auto const gw = Account{"gw1"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(5000), src, dst, gw); env.close(); @@ -4868,7 +4868,7 @@ struct PayChan_test : public beast::unit_test::suite auto const dst = Account("bob0"); auto const gw = Account{"gw0"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(10000), src, dst, gw); env.close(); @@ -4921,7 +4921,7 @@ struct PayChan_test : public beast::unit_test::suite auto const dst = Account("dan1"); auto const gw = Account{"gw1"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(10000), src, dst, gw); env.close(); @@ -4974,7 +4974,7 @@ struct PayChan_test : public beast::unit_test::suite auto const dst = Account("alice2"); auto const gw = Account{"gw0"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(10000), src, dst, gw); env.close(); @@ -5027,7 +5027,7 @@ struct PayChan_test : public beast::unit_test::suite auto const dst = Account("carol0"); auto const gw = Account{"gw1"}; auto const USD = gw["USD"]; - + Env env{*this, features}; env.fund(XRP(10000), src, dst, gw); env.close(); @@ -5079,7 +5079,7 @@ struct PayChan_test : public beast::unit_test::suite testcase("IC Gateway"); using namespace test::jtx; using namespace std::literals; - + // issuer -> src // src > issuer // dest no trustline @@ -5389,13 +5389,15 @@ struct PayChan_test : public beast::unit_test::suite auto const delta = USD(500); auto const reqBal = chanBal + delta; auto const authAmt = reqBal + USD(100); - auto const sig = signClaimICAuth(alice.pk(), alice.sk(), chan, authAmt); + auto const sig = + signClaimICAuth(alice.pk(), alice.sk(), chan, authAmt); env(claim(gw, chan, reqBal, authAmt, Slice(sig), alice.pk())); env.close(); BEAST_EXPECT(preAlice == USD(10000)); BEAST_EXPECT(env.balance(alice, USD.issue()) == preAlice - delta); std::cout << "PRE ALICE: " << preAlice << "\n"; - std::cout << "POST ALICE: " << env.balance(alice, USD.issue()) << "\n"; + std::cout << "POST ALICE: " << env.balance(alice, USD.issue()) + << "\n"; } } @@ -5423,7 +5425,7 @@ struct PayChan_test : public beast::unit_test::suite env(pay(gw, alice, USD(10000))); env(pay(gw, bob, USD(10000))); env.close(); - + // alice can create paychan w/ xfer rate auto const preAlice = env.balance(alice, USD.issue()); auto const pk = alice.pk(); @@ -5641,7 +5643,8 @@ struct PayChan_test : public beast::unit_test::suite auto chan = channel(alice, bob, env.seq(alice)); // alice cannot create because bob's trustline is not authorized // all parties must be authorized - env(create(alice, bob, USD(1000), settleDelay, pk), ter(tecNO_AUTH)); + env(create(alice, bob, USD(1000), settleDelay, pk), + ter(tecNO_AUTH)); env.close(); env(trust(gw, bobUSD(10000)), txflags(tfSetfAuth)); @@ -5671,7 +5674,8 @@ struct PayChan_test : public beast::unit_test::suite auto const newAuthAmt = newReqBal + USD(100); auto const sig = signClaimICAuth(alice.pk(), alice.sk(), chan, newAuthAmt); - env(claim(bob, chan, newReqBal, newAuthAmt, Slice(sig), alice.pk())); + env(claim( + bob, chan, newReqBal, newAuthAmt, Slice(sig), alice.pk())); env.close(); } } @@ -5753,7 +5757,7 @@ struct PayChan_test : public beast::unit_test::suite // set freeze on alice trustline env(trust(gw, USD(100000), alice, tfSetFreeze)); env.close(); - + // setup transaction auto const pk = alice.pk(); auto const settleDelay = 100s; @@ -5771,18 +5775,18 @@ struct PayChan_test : public beast::unit_test::suite chan = channel(alice, bob, env.seq(alice)); env(create(alice, bob, USD(1000), settleDelay, pk)); env.close(); - + // set freeze on alice trustline env(trust(gw, USD(100000), alice, tfSetFreeze)); env.close(); - + // paychan fields auto chanBal = channelBalance(*env.current(), chan); auto chanAmt = channelAmount(*env.current(), chan); auto const delta = USD(10); auto reqBal = chanBal + delta; auto authAmt = reqBal + USD(100); - + // alice claim paychan fails - frozen trustline env(claim(alice, chan, reqBal, authAmt), ter(tecFROZEN)); @@ -5950,20 +5954,20 @@ struct PayChan_test : public beast::unit_test::suite env(pay(gw, alice, USD(10000000000000000))); env(pay(gw, bob, USD(10000000000000000))); env.close(); - + // setup tx auto const pk = alice.pk(); auto const settleDelay = 100s; auto const chan = channel(alice, bob, env.seq(alice)); - + // create paychan fails - precision loss env(create(alice, bob, USD(10000000000000000), settleDelay, pk)); env.close(); - + // alice cannot fund again - precision loss env(fund(alice, chan, USD(1)), ter(tecPRECISION_LOSS)); env.close(); - + // setup tx auto const preAlice = env.balance(alice, USD.issue()); auto const preLocked = -lockedAmount(env, alice, gw, USD); @@ -5971,13 +5975,13 @@ struct PayChan_test : public beast::unit_test::suite auto chanAmt = channelAmount(*env.current(), chan); auto const delta = USD(10000000000000000); auto reqBal = chanBal + delta; - + // create paychan success env(claim(alice, chan, reqBal, reqBal)); env.close(); auto postLocked = -lockedAmount(env, alice, gw, USD); BEAST_EXPECT(postLocked == USD(0)); - + // alice can fund again env(pay(gw, alice, USD(1))); env.close(); @@ -6000,7 +6004,8 @@ struct PayChan_test : public beast::unit_test::suite auto const pk = alice.pk(); auto const settleDelay = 100s; // alice cannot create paychan for 1/10/100 token - precision loss - env(create(alice, bob, USD(1), settleDelay, pk), ter(tecPRECISION_LOSS)); + env(create(alice, bob, USD(1), settleDelay, pk), + ter(tecPRECISION_LOSS)); env.close(); // alice can create paychan for 1000 token auto const chan = channel(alice, bob, env.seq(alice)); @@ -6012,7 +6017,8 @@ struct PayChan_test : public beast::unit_test::suite auto reqBal = USD(1000); auto authAmt = reqBal + USD(1000); auto sig = signClaimICAuth(alice.pk(), alice.sk(), chan, authAmt); - env(claim(bob, chan, reqBal, authAmt, Slice(sig), alice.pk()), ter(tecPRECISION_LOSS)); + env(claim(bob, chan, reqBal, authAmt, Slice(sig), alice.pk()), + ter(tecPRECISION_LOSS)); reqBal = USD(10000); authAmt = reqBal + USD(10000);