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]);