4414 using namespace jtx;
4416 testcase(
"Bridge usage simulation");
4419 XEnv scEnv(*
this,
true);
4425 Account doorXRPLocking(
"doorXRPLocking"), doorUSDLocking(
"doorUSDLocking"),
4426 doorUSDIssuing(
"doorUSDIssuing");
4428 constexpr size_t num_acct = 10;
4429 auto a = [&doorXRPLocking, &doorUSDLocking, &doorUSDIssuing]() {
4433 for (
int i = 0; i < num_acct; ++i)
4439 doorXRPLocking = result.
back();
4441 doorUSDLocking = result.
back();
4443 doorUSDIssuing = result.
back();
4447 for (
auto& acct : a)
4451 mcEnv.
fund(amt, acct);
4452 scEnv.
fund(amt, acct);
4454 Account const USDLocking{
"USDLocking"};
4455 IOU const usdLocking{USDLocking[
"USD"]};
4456 IOU const usdIssuing{doorUSDIssuing[
"USD"]};
4458 mcEnv.
fund(
XRP(100000), USDLocking);
4460 mcEnv.
tx(
trust(doorUSDLocking, usdLocking(100000)));
4462 mcEnv.
tx(
pay(USDLocking, doorUSDLocking, usdLocking(50000)));
4464 for (
int i = 0; i < a.size(); ++i)
4469 mcEnv.
tx(
trust(acct, usdLocking(100000)));
4470 scEnv.
tx(
trust(acct, usdIssuing(100000)));
4475 st->init(s.account);
4480 constexpr size_t num_ua = 20;
4485 for (
int i = 0; i < num_ua; ++i)
4494 auto initBridge = [&mcEnv, &scEnv, &st](
BridgeDef& bd) {
4495 bd.initBridge(mcEnv, scEnv);
4496 st->a_.spendFee(bd.doorA, 2);
4497 st->b_.spendFee(bd.doorB, 2);
4535 ac(0, st, xrp_b, {a[0], ua[0],
XRP(777), xrp_b.reward,
true});
4536 xfer(8, st, xrp_b, {a[0], ua[0], a[2],
XRP(3),
true});
4541 ac(0, st, xrp_b, {a[0], ua[0],
XRP(777), xrp_b.reward,
false});
4542 xfer(8, st, xrp_b, {a[0], ua[0], a[2],
XRP(3),
false});
4549 xfer(1, st, xrp_b, {a[1], a[1], a[1],
XRP(1),
true});
4550 xfer(2, st, xrp_b, {a[0], a[0], a[1],
XRP(3),
false});
4551 xfer(2, st, xrp_b, {a[1], a[1], a[1],
XRP(5),
false});
4553 xfer(2, st, xrp_b, {a[1], a[1], a[1],
XRP(9),
true});
4558 xfer(0, st, usd_b, {a[0], a[1], a[2], usdLocking(3),
true});
4563 xfer(0, st, usd_b, {a[0], a[0], a[1], usdLocking(6),
true});
4564 xfer(1, st, usd_b, {a[0], a[0], a[1], usdIssuing(8),
false});
4565 xfer(1, st, usd_b, {a[1], a[1], a[1], usdLocking(1),
true});
4566 xfer(2, st, usd_b, {a[0], a[0], a[1], usdIssuing(3),
false});
4567 xfer(2, st, usd_b, {a[1], a[1], a[1], usdIssuing(5),
false});
4568 xfer(2, st, usd_b, {a[0], a[0], a[1], usdIssuing(7),
false});
4569 xfer(2, st, usd_b, {a[1], a[1], a[1], usdLocking(9),
true});
4574 xfer(0, st, xrp_b, {a[0], a[0], a[0],
XRP(1),
true});
4575 xfer(0, st, usd_b, {a[1], a[3], a[3], usdIssuing(3),
false});
4576 xfer(0, st, usd_b, {a[3], a[2], a[1], usdIssuing(5),
false});
4578 xfer(1, st, xrp_b, {a[0], a[0], a[0],
XRP(4),
false});
4579 xfer(1, st, xrp_b, {a[1], a[1], a[0],
XRP(8),
true});
4580 xfer(1, st, usd_b, {a[4], a[1], a[1], usdLocking(7),
true});
4582 xfer(3, st, xrp_b, {a[1], a[1], a[0],
XRP(7),
true});
4583 xfer(3, st, xrp_b, {a[0], a[4], a[3],
XRP(2),
false});
4584 xfer(3, st, xrp_b, {a[1], a[1], a[0],
XRP(9),
true});
4585 xfer(3, st, usd_b, {a[3], a[1], a[1], usdIssuing(11),
false});
4590 ac(0, st, xrp_b, {a[0], ua[1],
XRP(301), xrp_b.reward,
true});
4591 ac(0, st, xrp_b, {a[1], ua[2],
XRP(302), xrp_b.reward,
true});
4592 ac(1, st, xrp_b, {a[0], ua[3],
XRP(303), xrp_b.reward,
true});
4593 ac(2, st, xrp_b, {a[1], ua[4],
XRP(304), xrp_b.reward,
true});
4594 ac(3, st, xrp_b, {a[0], ua[5],
XRP(305), xrp_b.reward,
true});
4595 ac(4, st, xrp_b, {a[1], ua[6],
XRP(306), xrp_b.reward,
true});
4596 ac(6, st, xrp_b, {a[0], ua[7],
XRP(307), xrp_b.reward,
true});
4597 ac(7, st, xrp_b, {a[2], ua[8],
XRP(308), xrp_b.reward,
true});
4598 ac(9, st, xrp_b, {a[0], ua[9],
XRP(309), xrp_b.reward,
true});
4599 ac(9, st, xrp_b, {a[0], ua[9],
XRP(309), xrp_b.reward,
true});
4600 ac(10, st, xrp_b, {a[0], ua[10],
XRP(310), xrp_b.reward,
true});
4601 ac(12, st, xrp_b, {a[0], ua[11],
XRP(311), xrp_b.reward,
true});
4602 ac(12, st, xrp_b, {a[3], ua[12],
XRP(312), xrp_b.reward,
true});
4603 ac(12, st, xrp_b, {a[4], ua[13],
XRP(313), xrp_b.reward,
true});
4604 ac(12, st, xrp_b, {a[3], ua[14],
XRP(314), xrp_b.reward,
true});
4605 ac(12, st, xrp_b, {a[6], ua[15],
XRP(315), xrp_b.reward,
true});
4606 ac(13, st, xrp_b, {a[7], ua[16],
XRP(316), xrp_b.reward,
true});
4607 ac(15, st, xrp_b, {a[3], ua[17],
XRP(317), xrp_b.reward,
true});