4072 using namespace jtx;
4074 testcase(
"Bridge usage simulation");
4077 XEnv scEnv(*
this,
true);
4083 Account doorXRPLocking(
"doorXRPLocking"), doorUSDLocking(
"doorUSDLocking"), doorUSDIssuing(
"doorUSDIssuing");
4085 constexpr size_t num_acct = 10;
4086 auto a = [&doorXRPLocking, &doorUSDLocking, &doorUSDIssuing]() {
4090 for (
int i = 0; i < num_acct; ++i)
4093 doorXRPLocking = result.
back();
4095 doorUSDLocking = result.
back();
4097 doorUSDIssuing = result.
back();
4101 for (
auto& acct : a)
4105 mcEnv.
fund(amt, acct);
4106 scEnv.
fund(amt, acct);
4108 Account USDLocking{
"USDLocking"};
4109 IOU usdLocking{USDLocking[
"USD"]};
4110 IOU usdIssuing{doorUSDIssuing[
"USD"]};
4112 mcEnv.
fund(
XRP(100000), USDLocking);
4114 mcEnv.
tx(
trust(doorUSDLocking, usdLocking(100000)));
4116 mcEnv.
tx(
pay(USDLocking, doorUSDLocking, usdLocking(50000)));
4118 for (
int i = 0; i < a.size(); ++i)
4123 mcEnv.
tx(
trust(acct, usdLocking(100000)));
4124 scEnv.
tx(
trust(acct, usdIssuing(100000)));
4129 st->init(s.account);
4134 constexpr size_t num_ua = 20;
4139 for (
int i = 0; i < num_ua; ++i)
4145 auto initBridge = [&mcEnv, &scEnv, &st](
BridgeDef& bd) {
4146 bd.initBridge(mcEnv, scEnv);
4147 st->a_.spendFee(bd.doorA, 2);
4148 st->b_.spendFee(bd.doorB, 2);
4170 ac(0, st, xrp_b, {a[0], ua[0],
XRP(777), xrp_b.reward,
true});
4171 xfer(8, st, xrp_b, {a[0], ua[0], a[2],
XRP(3),
true});
4176 ac(0, st, xrp_b, {a[0], ua[0],
XRP(777), xrp_b.reward,
false});
4177 xfer(8, st, xrp_b, {a[0], ua[0], a[2],
XRP(3),
false});
4184 xfer(1, st, xrp_b, {a[1], a[1], a[1],
XRP(1),
true});
4185 xfer(2, st, xrp_b, {a[0], a[0], a[1],
XRP(3),
false});
4186 xfer(2, st, xrp_b, {a[1], a[1], a[1],
XRP(5),
false});
4188 xfer(2, st, xrp_b, {a[1], a[1], a[1],
XRP(9),
true});
4193 xfer(0, st, usd_b, {a[0], a[1], a[2], usdLocking(3),
true});
4198 xfer(0, st, usd_b, {a[0], a[0], a[1], usdLocking(6),
true});
4199 xfer(1, st, usd_b, {a[0], a[0], a[1], usdIssuing(8),
false});
4200 xfer(1, st, usd_b, {a[1], a[1], a[1], usdLocking(1),
true});
4201 xfer(2, st, usd_b, {a[0], a[0], a[1], usdIssuing(3),
false});
4202 xfer(2, st, usd_b, {a[1], a[1], a[1], usdIssuing(5),
false});
4203 xfer(2, st, usd_b, {a[0], a[0], a[1], usdIssuing(7),
false});
4204 xfer(2, st, usd_b, {a[1], a[1], a[1], usdLocking(9),
true});
4209 xfer(0, st, xrp_b, {a[0], a[0], a[0],
XRP(1),
true});
4210 xfer(0, st, usd_b, {a[1], a[3], a[3], usdIssuing(3),
false});
4211 xfer(0, st, usd_b, {a[3], a[2], a[1], usdIssuing(5),
false});
4213 xfer(1, st, xrp_b, {a[0], a[0], a[0],
XRP(4),
false});
4214 xfer(1, st, xrp_b, {a[1], a[1], a[0],
XRP(8),
true});
4215 xfer(1, st, usd_b, {a[4], a[1], a[1], usdLocking(7),
true});
4217 xfer(3, st, xrp_b, {a[1], a[1], a[0],
XRP(7),
true});
4218 xfer(3, st, xrp_b, {a[0], a[4], a[3],
XRP(2),
false});
4219 xfer(3, st, xrp_b, {a[1], a[1], a[0],
XRP(9),
true});
4220 xfer(3, st, usd_b, {a[3], a[1], a[1], usdIssuing(11),
false});
4225 ac(0, st, xrp_b, {a[0], ua[1],
XRP(301), xrp_b.reward,
true});
4226 ac(0, st, xrp_b, {a[1], ua[2],
XRP(302), xrp_b.reward,
true});
4227 ac(1, st, xrp_b, {a[0], ua[3],
XRP(303), xrp_b.reward,
true});
4228 ac(2, st, xrp_b, {a[1], ua[4],
XRP(304), xrp_b.reward,
true});
4229 ac(3, st, xrp_b, {a[0], ua[5],
XRP(305), xrp_b.reward,
true});
4230 ac(4, st, xrp_b, {a[1], ua[6],
XRP(306), xrp_b.reward,
true});
4231 ac(6, st, xrp_b, {a[0], ua[7],
XRP(307), xrp_b.reward,
true});
4232 ac(7, st, xrp_b, {a[2], ua[8],
XRP(308), xrp_b.reward,
true});
4233 ac(9, st, xrp_b, {a[0], ua[9],
XRP(309), xrp_b.reward,
true});
4234 ac(9, st, xrp_b, {a[0], ua[9],
XRP(309), xrp_b.reward,
true});
4235 ac(10, st, xrp_b, {a[0], ua[10],
XRP(310), xrp_b.reward,
true});
4236 ac(12, st, xrp_b, {a[0], ua[11],
XRP(311), xrp_b.reward,
true});
4237 ac(12, st, xrp_b, {a[3], ua[12],
XRP(312), xrp_b.reward,
true});
4238 ac(12, st, xrp_b, {a[4], ua[13],
XRP(313), xrp_b.reward,
true});
4239 ac(12, st, xrp_b, {a[3], ua[14],
XRP(314), xrp_b.reward,
true});
4240 ac(12, st, xrp_b, {a[6], ua[15],
XRP(315), xrp_b.reward,
true});
4241 ac(13, st, xrp_b, {a[7], ua[16],
XRP(316), xrp_b.reward,
true});
4242 ac(15, st, xrp_b, {a[3], ua[17],
XRP(317), xrp_b.reward,
true});