19 #include <ripple/beast/unit_test.h>
20 #include <ripple/protocol/SField.h>
21 #include <ripple/protocol/jss.h>
25 #include <ripple/rpc/GRPCHandlers.h>
26 #include <ripple/rpc/impl/RPCHelpers.h>
27 #include <test/rpc/GRPCTestClientBase.h>
37 tx[jss::tx][jss::Sequence].asInt() == sequence &&
38 tx[jss::tx][jss::ledger_index].asInt() == ledger);
52 jvc[jss::account] = account.human();
53 jvc[jss::ledger_index_min] = ledger_min;
54 jvc[jss::ledger_index_max] = ledger_max;
55 jvc[jss::forward] = forward;
56 jvc[jss::limit] = limit;
58 jvc[jss::marker] = marker;
60 return env.
rpc(
"json",
"account_tx",
to_string(jvc))[jss::result];
66 testcase(
"Paging for Single Account");
67 using namespace test::jtx;
74 env.fund(XRP(10000), A1, A2, A3);
77 env.trust(A3[
"USD"](1000), A1);
78 env.trust(A2[
"USD"](1000), A1);
79 env.trust(A3[
"USD"](1000), A2);
82 for (
auto i = 0; i < 5; ++i)
84 env(pay(A2, A1, A2[
"USD"](2)));
85 env(pay(A3, A1, A3[
"USD"](2)));
86 env(offer(A1, XRP(11), A1[
"USD"](1)));
87 env(offer(A2, XRP(10), A2[
"USD"](1)));
88 env(offer(A3, XRP(9), A3[
"USD"](1)));
113 auto jrr =
next(env, A3, 2, 5, 2,
true);
114 auto txs = jrr[jss::transactions];
115 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 2))
119 if (!BEAST_EXPECT(jrr[jss::marker]))
122 jrr =
next(env, A3, 2, 5, 2,
true, jrr[jss::marker]);
123 txs = jrr[jss::transactions];
124 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 2))
128 if (!BEAST_EXPECT(jrr[jss::marker]))
131 jrr =
next(env, A3, 2, 5, 2,
true, jrr[jss::marker]);
132 txs = jrr[jss::transactions];
133 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 2))
137 BEAST_EXPECT(!jrr[jss::marker]);
142 auto jrr =
next(env, A3, 3, 9, 1,
true);
143 auto txs = jrr[jss::transactions];
144 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 1))
147 if (!BEAST_EXPECT(jrr[jss::marker]))
150 jrr =
next(env, A3, 3, 9, 1,
true, jrr[jss::marker]);
151 txs = jrr[jss::transactions];
152 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 1))
155 if (!BEAST_EXPECT(jrr[jss::marker]))
158 jrr =
next(env, A3, 3, 9, 1,
true, jrr[jss::marker]);
159 txs = jrr[jss::transactions];
160 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 1))
163 if (!BEAST_EXPECT(jrr[jss::marker]))
167 jrr =
next(env, A3, 3, 9, 3,
true, jrr[jss::marker]);
168 txs = jrr[jss::transactions];
169 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 3))
174 if (!BEAST_EXPECT(jrr[jss::marker]))
177 jrr =
next(env, A3, 3, 9, 3,
true, jrr[jss::marker]);
178 txs = jrr[jss::transactions];
179 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 3))
184 if (!BEAST_EXPECT(jrr[jss::marker]))
187 jrr =
next(env, A3, 3, 9, 3,
true, jrr[jss::marker]);
188 txs = jrr[jss::transactions];
189 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 3))
194 if (!BEAST_EXPECT(jrr[jss::marker]))
197 jrr =
next(env, A3, 3, 9, 3,
true, jrr[jss::marker]);
198 txs = jrr[jss::transactions];
199 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 2))
203 BEAST_EXPECT(!jrr[jss::marker]);
208 auto jrr =
next(env, A3, 3, 9, 2,
false);
209 auto txs = jrr[jss::transactions];
210 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 2))
214 if (!BEAST_EXPECT(jrr[jss::marker]))
217 jrr =
next(env, A3, 3, 9, 2,
false, jrr[jss::marker]);
218 txs = jrr[jss::transactions];
219 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 2))
223 if (!BEAST_EXPECT(jrr[jss::marker]))
227 jrr =
next(env, A3, 3, 9, 3,
false, jrr[jss::marker]);
228 txs = jrr[jss::transactions];
229 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 3))
234 if (!BEAST_EXPECT(jrr[jss::marker]))
237 jrr =
next(env, A3, 3, 9, 3,
false, jrr[jss::marker]);
238 txs = jrr[jss::transactions];
239 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 3))
244 if (!BEAST_EXPECT(jrr[jss::marker]))
247 jrr =
next(env, A3, 3, 9, 3,
false, jrr[jss::marker]);
248 txs = jrr[jss::transactions];
249 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 3))
254 if (!BEAST_EXPECT(jrr[jss::marker]))
257 jrr =
next(env, A3, 3, 9, 3,
false, jrr[jss::marker]);
258 txs = jrr[jss::transactions];
259 if (!BEAST_EXPECT(txs.isArray() && txs.size() == 1))
262 BEAST_EXPECT(!jrr[jss::marker]);