22        using namespace test::jtx;
 
   23        Env env{*
this, asAdmin ? envconfig() : envconfig(no_admin)};
 
   24        Account 
const gw{
"gateway"};
 
   25        auto const USD = gw[
"USD"];
 
   26        env.fund(XRP(100000), gw);
 
   28        int const max_limit = 256;  
 
   31        for (
auto i = 0; i < max_limit + 10; i++)
 
   34            env.fund(XRP(1000), bob);
 
   43        jvParams[jss::ledger_index] = 
"current";
 
   44        jvParams[jss::binary] = 
false;
 
   46            auto const jrr = env.rpc(
 
   47                "json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
   49                jrr[jss::ledger_current_index].isIntegral() &&
 
   50                jrr[jss::ledger_current_index].asInt() > 0);
 
   52            BEAST_EXPECT(checkArraySize(jrr[jss::state], max_limit));
 
   56        for (
auto delta = -1; delta <= 1; delta++)
 
   58            jvParams[jss::limit] = max_limit + delta;
 
   59            auto const jrr = env.rpc(
 
   60                "json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
   61            BEAST_EXPECT(checkArraySize(
 
   63                (delta > 0 && !asAdmin) ? max_limit : max_limit + delta));
 
 
   70        using namespace test::jtx;
 
   71        Env env{*
this, envconfig(no_admin)};
 
   72        Account 
const gw{
"gateway"};
 
   73        auto const USD = gw[
"USD"];
 
   74        env.fund(XRP(100000), gw);
 
   76        int const num_accounts = 10;
 
   78        for (
auto i = 0; i < num_accounts; i++)
 
   81            env.fund(XRP(1000), bob);
 
   87        jvParams[jss::ledger_index] = 
"current";
 
   88        jvParams[jss::binary] = 
true;
 
   90            env.rpc(
"json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
   92            jrr[jss::ledger_current_index].isIntegral() &&
 
   93            jrr[jss::ledger_current_index].asInt() > 0);
 
   94        BEAST_EXPECT(!jrr.isMember(jss::marker));
 
   95        BEAST_EXPECT(checkArraySize(jrr[jss::state], num_accounts + 4));
 
 
  101        using namespace test::jtx;
 
  103        Account 
const gw{
"gateway"};
 
  104        auto const USD = gw[
"USD"];
 
  105        Account 
const bob{
"bob"};
 
  107        env.fund(XRP(10000), gw, bob);
 
  108        env.trust(USD(1000), bob);
 
  113            jvParams[jss::limit] = 
"0";  
 
  114            auto const jrr = env.rpc(
 
  115                "json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
  116            BEAST_EXPECT(jrr[jss::error] == 
"invalidParams");
 
  117            BEAST_EXPECT(jrr[jss::status] == 
"error");
 
  119                jrr[jss::error_message] ==
 
  120                "Invalid field 'limit', not integer.");
 
  126            jvParams[jss::marker] = 
"NOT_A_MARKER";
 
  127            auto const jrr = env.rpc(
 
  128                "json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
  129            BEAST_EXPECT(jrr[jss::error] == 
"invalidParams");
 
  130            BEAST_EXPECT(jrr[jss::status] == 
"error");
 
  132                jrr[jss::error_message] ==
 
  133                "Invalid field 'marker', not valid.");
 
  139            jvParams[jss::marker] = 1;
 
  140            auto const jrr = env.rpc(
 
  141                "json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
  142            BEAST_EXPECT(jrr[jss::error] == 
"invalidParams");
 
  143            BEAST_EXPECT(jrr[jss::status] == 
"error");
 
  145                jrr[jss::error_message] ==
 
  146                "Invalid field 'marker', not valid.");
 
  152            jvParams[jss::ledger_index] = 10u;
 
  153            auto const jrr = env.rpc(
 
  154                "json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
  155            BEAST_EXPECT(jrr[jss::error] == 
"lgrNotFound");
 
  156            BEAST_EXPECT(jrr[jss::status] == 
"error");
 
  157            BEAST_EXPECT(jrr[jss::error_message] == 
"ledgerNotFound");
 
 
  164        using namespace test::jtx;
 
  165        Env env{*
this, envconfig(no_admin)};
 
  166        Account 
const gw{
"gateway"};
 
  167        auto const USD = gw[
"USD"];
 
  168        env.fund(XRP(100000), gw);
 
  170        int const num_accounts = 20;
 
  172        for (
auto i = 0; i < num_accounts; i++)
 
  175            env.fund(XRP(1000), bob);
 
  181        jvParams[jss::ledger_index] = 
"current";
 
  182        jvParams[jss::binary] = 
false;
 
  184            env.rpc(
"json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
  185        auto const total_count = jrr[jss::state].
size();
 
  188        jvParams[jss::limit] = 5;
 
  189        jrr = env.rpc(
"json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
  191        auto running_total = jrr[jss::state].size();
 
  192        while (jrr.isMember(jss::marker))
 
  194            jvParams[jss::marker] = jrr[jss::marker];
 
  196                "json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
  197            running_total += jrr[jss::state].
size();
 
  199        BEAST_EXPECT(running_total == total_count);
 
 
  205        using namespace test::jtx;
 
  207        env.fund(XRP(100000), 
"alice");
 
  214            jvParams[jss::ledger_index] = 
"closed";
 
  216                "json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
  217            if (BEAST_EXPECT(jrr.isMember(jss::ledger)))
 
  219                    jrr[jss::ledger][jss::ledger_hash] ==
 
  225            jvParams[jss::ledger_index] = 
"closed";
 
  226            jvParams[jss::binary] = 
true;
 
  228                "json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
  229            if (BEAST_EXPECT(jrr.isMember(jss::ledger)))
 
  232                    strUnHex(jrr[jss::ledger][jss::ledger_data].asString());
 
  233                if (BEAST_EXPECT(data))
 
  238                    BEAST_EXPECT(seq == 3);
 
  245            jvParams[jss::binary] = 
true;
 
  247                "json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
  248            BEAST_EXPECT(jrr.isMember(jss::ledger));
 
  249            BEAST_EXPECT(!jrr[jss::ledger].isMember(jss::ledger_data));
 
 
  257        using namespace test::jtx;
 
  261             {testable_amendments() - fixInnerObjTemplate2,
 
  262              testable_amendments() | fixInnerObjTemplate2})
 
  265            Env env{*
this, envconfig(validator, 
""), features};
 
  267            Account 
const gw{
"gateway"};
 
  268            auto const USD = gw[
"USD"];
 
  269            env.fund(XRP(100000), gw);
 
  273                jvParams[jss::ledger_index] = 
"current";
 
  274                jvParams[jss::type] = type;
 
  276                    "json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
  280            for (
auto const& type :
 
  289                  jss::payment_channel,
 
  290                  jss::deposit_preauth})
 
  293                BEAST_EXPECT(checkArraySize(jrr[jss::state], 0));
 
  296            int const num_accounts = 10;
 
  298            for (
auto i = 0; i < num_accounts; i++)
 
  301                env.fund(XRP(1000), bob);
 
  303            env(offer(Account{
"bob0"}, USD(100), XRP(100)));
 
  304            env.trust(Account{
"bob2"}[
"USD"](100), Account{
"bob3"});
 
  307            for (
int i = 0; i <= 256; ++i)
 
  311                if (!majorities.empty())
 
  318                {{Account{
"bob1"}, 1}, {Account{
"bob2"}, 1}}));
 
  319            env(ticket::create(env.master, 1));
 
  323                jv[jss::TransactionType] = jss::EscrowCreate;
 
  324                jv[jss::Account] = Account{
"bob5"}.human();
 
  325                jv[jss::Destination] = Account{
"bob6"}.human();
 
  327                jv[sfFinishAfter.fieldName] =
 
  336                jv[jss::TransactionType] = jss::PaymentChannelCreate;
 
  337                jv[jss::Account] = Account{
"bob6"}.human();
 
  338                jv[jss::Destination] = Account{
"bob7"}.human();
 
  341                jv[sfPublicKey.fieldName] =
 
  343                jv[sfCancelAfter.fieldName] =
 
  350            env(check::create(
"bob6", 
"bob7", XRP(100)));
 
  353            env(deposit::auth(Account{
"bob9"}, Account{
"bob4"}));
 
  354            env(deposit::auth(Account{
"bob9"}, Account{
"bob8"}));
 
  361                BEAST_EXPECT(checkArraySize(jrr[jss::state], 12));
 
  362                for (
auto const& j : jrr[jss::state])
 
  363                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::AccountRoot);
 
  368                BEAST_EXPECT(checkArraySize(jrr[jss::state], 1));
 
  369                for (
auto const& j : jrr[jss::state])
 
  370                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::Amendments);
 
  375                BEAST_EXPECT(checkArraySize(jrr[jss::state], 1));
 
  376                for (
auto const& j : jrr[jss::state])
 
  377                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::Check);
 
  382                BEAST_EXPECT(checkArraySize(jrr[jss::state], 9));
 
  383                for (
auto const& j : jrr[jss::state])
 
  384                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::DirectoryNode);
 
  389                BEAST_EXPECT(checkArraySize(jrr[jss::state], 1));
 
  390                for (
auto const& j : jrr[jss::state])
 
  391                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::FeeSettings);
 
  396                BEAST_EXPECT(checkArraySize(jrr[jss::state], 2));
 
  397                for (
auto const& j : jrr[jss::state])
 
  398                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::LedgerHashes);
 
  403                BEAST_EXPECT(checkArraySize(jrr[jss::state], 1));
 
  404                for (
auto const& j : jrr[jss::state])
 
  405                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::Offer);
 
  410                BEAST_EXPECT(checkArraySize(jrr[jss::state], 1));
 
  411                for (
auto const& j : jrr[jss::state])
 
  412                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::SignerList);
 
  417                BEAST_EXPECT(checkArraySize(jrr[jss::state], 1));
 
  418                for (
auto const& j : jrr[jss::state])
 
  419                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::RippleState);
 
  424                BEAST_EXPECT(checkArraySize(jrr[jss::state], 1));
 
  425                for (
auto const& j : jrr[jss::state])
 
  426                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::Ticket);
 
  431                BEAST_EXPECT(checkArraySize(jrr[jss::state], 1));
 
  432                for (
auto const& j : jrr[jss::state])
 
  433                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::Escrow);
 
  437                auto const jrr = 
makeRequest(jss::payment_channel);
 
  438                BEAST_EXPECT(checkArraySize(jrr[jss::state], 1));
 
  439                for (
auto const& j : jrr[jss::state])
 
  440                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::PayChannel);
 
  444                auto const jrr = 
makeRequest(jss::deposit_preauth);
 
  445                BEAST_EXPECT(checkArraySize(jrr[jss::state], 2));
 
  446                for (
auto const& j : jrr[jss::state])
 
  447                    BEAST_EXPECT(j[
"LedgerEntryType"] == jss::DepositPreauth);
 
  452                jvParams[jss::ledger_index] = 
"current";
 
  453                jvParams[jss::type] = 
"misspelling";
 
  454                auto const jrr = env.rpc(
 
  455                    "json", 
"ledger_data", 
to_string(jvParams))[jss::result];
 
  456                BEAST_EXPECT(jrr.isMember(
"error"));
 
  457                BEAST_EXPECT(jrr[
"error"] == 
"invalidParams");
 
  458                BEAST_EXPECT(jrr[
"error_message"] == 
"Invalid field 'type'.");