20 #include <ripple/protocol/jss.h>
50 auto const USD_gw = gw[
"USD"];
52 auto const USD_bob = bob[
"USD"];
54 env.fund(
XRP(10000), gw, bob);
55 env.trust(USD_gw(1000), bob);
60 env(
pay(gw, bob, USD_gw(10)));
61 unsigned const offer_count = 12u;
62 for (
auto i = 0u; i < offer_count; i++)
71 env.rpc(
"account_offers", bob.
human())[jss::result][jss::offers];
78 jvParams[jss::account] = bob.
human();
79 jvParams[jss::limit] = 1u;
80 auto const jrr_l = env.rpc(
82 auto const& jro_l = jrr_l[jss::offers];
94 auto const USD_gw = gw[
"USD"];
96 auto const USD_bob = bob[
"USD"];
98 env.fund(
XRP(10000), gw, bob);
99 env.trust(USD_gw(1000), bob);
104 env(
pay(gw, bob, USD_gw(10)));
106 env(offer(bob,
XRP(100), USD_bob(1)));
107 env(offer(bob,
XRP(200), USD_gw(2)));
108 env(offer(bob,
XRP(30), USD_gw(6)));
111 auto const jroOuter =
112 env.rpc(
"account_offers", bob.
human())[jss::result][jss::offers];
119 BEAST_EXPECT(jroOuter[0u][jss::quality] ==
"100000000");
120 BEAST_EXPECT(jroOuter[0u][jss::taker_gets][jss::currency] ==
"USD");
122 jroOuter[0u][jss::taker_gets][jss::issuer] == gw.
human());
123 BEAST_EXPECT(jroOuter[0u][jss::taker_gets][jss::value] ==
"2");
124 BEAST_EXPECT(jroOuter[0u][jss::taker_pays] ==
"200000000");
126 BEAST_EXPECT(jroOuter[1u][jss::quality] ==
"100000000");
127 BEAST_EXPECT(jroOuter[1u][jss::taker_gets][jss::currency] ==
"USD");
129 jroOuter[1u][jss::taker_gets][jss::issuer] == bob.
human());
130 BEAST_EXPECT(jroOuter[1u][jss::taker_gets][jss::value] ==
"1");
131 BEAST_EXPECT(jroOuter[1u][jss::taker_pays] ==
"100000000");
133 BEAST_EXPECT(jroOuter[2u][jss::quality] ==
"5000000");
134 BEAST_EXPECT(jroOuter[2u][jss::taker_gets][jss::currency] ==
"USD");
136 jroOuter[2u][jss::taker_gets][jss::issuer] == gw.
human());
137 BEAST_EXPECT(jroOuter[2u][jss::taker_gets][jss::value] ==
"6");
138 BEAST_EXPECT(jroOuter[2u][jss::taker_pays] ==
"30000000");
144 jvParams[jss::account] = bob.
human();
145 jvParams[jss::limit] = 1u;
146 auto const jrr_l_1 = env.rpc(
150 auto const& jro_l_1 = jrr_l_1[jss::offers];
159 : (!jrr_l_1.isMember(jss::marker)));
162 BEAST_EXPECT(jroOuter[0u] == jro_l_1[0u]);
165 jvParams[jss::marker] = jrr_l_1[jss::marker];
166 auto const jrr_l_2 = env.rpc(
170 auto const& jro_l_2 = jrr_l_2[jss::offers];
173 BEAST_EXPECT(jroOuter[1u] == jro_l_2[0u]);
176 jvParams[jss::marker] = jrr_l_2[jss::marker];
177 jvParams[jss::limit] = 10u;
178 auto const jrr_l_3 = env.rpc(
182 auto const& jro_l_3 = jrr_l_3[jss::offers];
183 BEAST_EXPECT(!jrr_l_3.isMember(jss::marker));
185 BEAST_EXPECT(jroOuter[2u] == jro_l_3[0u]);
189 BEAST_EXPECT(jroOuter == jro_l_1);
201 jvParams[jss::account] = bob.
human();
202 jvParams[jss::limit] = 0u;
203 auto const jrr = env.rpc(
207 auto const& jro = jrr[jss::offers];
211 BEAST_EXPECT(jrr.isMember(jss::error_message));
217 BEAST_EXPECT(!jrr.isMember(jss::marker));
228 auto const USD_gw = gw[
"USD"];
230 auto const USD_bob = bob[
"USD"];
233 env.
trust(USD_gw(1000), bob);
237 auto const jrr = env.
rpc(
"account_offers");
238 BEAST_EXPECT(jrr[jss::error] ==
"badSyntax");
239 BEAST_EXPECT(jrr[jss::status] ==
"error");
240 BEAST_EXPECT(jrr[jss::error_message] ==
"Syntax error.");
246 jvParams[jss::account] =
"";
247 auto const jrr = env.
rpc(
251 BEAST_EXPECT(jrr[jss::error] ==
"actMalformed");
252 BEAST_EXPECT(jrr[jss::status] ==
"error");
253 BEAST_EXPECT(jrr[jss::error_message] ==
"Account malformed.");
258 auto const jrr = env.
rpc(
259 "account_offers",
Account(
"bogus").human())[jss::result];
260 BEAST_EXPECT(jrr[jss::error] ==
"actNotFound");
261 BEAST_EXPECT(jrr[jss::status] ==
"error");
262 BEAST_EXPECT(jrr[jss::error_message] ==
"Account not found.");
268 jvParams[jss::account] = bob.
human();
269 jvParams[jss::limit] =
"0";
270 auto const jrr = env.
rpc(
274 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
275 BEAST_EXPECT(jrr[jss::status] ==
"error");
277 jrr[jss::error_message] ==
278 "Invalid field 'limit', not unsigned integer.");
284 jvParams[jss::account] = bob.
human();
285 jvParams[jss::marker] =
"NOT_A_MARKER";
286 auto const jrr = env.
rpc(
290 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
291 BEAST_EXPECT(jrr[jss::status] ==
"error");
292 BEAST_EXPECT(jrr[jss::error_message] ==
"Invalid parameters.");
298 jvParams[jss::account] = bob.
human();
299 jvParams[jss::marker] = 1;
300 auto const jrr = env.
rpc(
304 BEAST_EXPECT(jrr[jss::error] ==
"invalidParams");
305 BEAST_EXPECT(jrr[jss::status] ==
"error");
307 jrr[jss::error_message] ==
308 "Invalid field 'marker', not string.");
314 jvParams[jss::account] = bob.
human();
315 jvParams[jss::ledger_index] = 10u;
316 auto const jrr = env.
rpc(
320 BEAST_EXPECT(jrr[jss::error] ==
"lgrNotFound");
321 BEAST_EXPECT(jrr[jss::status] ==
"error");
322 BEAST_EXPECT(jrr[jss::error_message] ==
"ledgerNotFound");