27 auto const baseFee = env.
current()->fees().base;
32 ret[jss::error_message].asString() ==
33 "Missing field 'base_asset'.");
38 ret[jss::error_message].asString() ==
39 "Missing field 'quote_asset'.");
55 "012345678901234567890123456789012345678",
56 "012345678901234567890123456789012345678G"};
57 for (
auto const& v : invalidAsset)
60 BEAST_EXPECT(ret[jss::error].asString() ==
"invalidParams");
62 BEAST_EXPECT(ret[jss::error].asString() ==
"invalidParams");
64 BEAST_EXPECT(ret[jss::error].asString() ==
"invalidParams");
70 ret[jss::error_message].asString() ==
71 "Missing field 'oracles'.");
75 BEAST_EXPECT(ret[jss::error].asString() ==
"oracleMalformed");
79 BEAST_EXPECT(ret[jss::error].asString() ==
"objectNotFound");
84 BEAST_EXPECT(ret[jss::error].asString() ==
"objectNotFound");
87 NoneTag, 1.2, -1,
"",
"none",
"1.2"};
88 for (
auto const& v : invalidDocument)
93 BEAST_EXPECT(ret[jss::error].asString() ==
"invalidParams");
98 BEAST_EXPECT(ret[jss::error].asString() ==
"oracleMalformed");
102 BEAST_EXPECT(ret[jss::error].asString() ==
"objectNotFound");
106 BEAST_EXPECT(ret[jss::error].asString() ==
"oracleMalformed");
113 .series = {{
"XRP",
"EUR", 740, 1}},
114 .fee =
static_cast<int>(baseFee.drops())});
116 env,
"XRP",
"USD", {{{owner, oracle.documentID()}}});
117 BEAST_EXPECT(ret[jss::error].asString() ==
"objectNotFound");
121 NoneTag, 0, 26, -1, 1.2,
"",
"none",
"1.2"};
122 for (
auto const& v : invalidTrim)
125 env,
"XRP",
"USD", {{{owner, oracle.documentID()}}}, v);
126 BEAST_EXPECT(ret[jss::error].asString() ==
"invalidParams");
131 NoneTag, -1, 1.2,
"",
"none",
"1.2"};
132 for (
auto const& v : invalidTime)
138 {{{owner, oracle.documentID()}}},
141 BEAST_EXPECT(ret[jss::error].asString() ==
"invalidParams");
149 static_cast<int>(env.
current()->fees().base.drops());
152 for (
int i = 0; i < 201; ++i)
157 env, {.owner = owner, .documentID = i, .fee = baseFee});
161 BEAST_EXPECT(ret[jss::error].asString() ==
"oracleMalformed");
171 auto prep = [&](
Env& env,
auto& oracles) {
173 for (
int i = 0; i < 10; ++i)
176 static_cast<int>(env.
current()->fees().base.drops());
183 .documentID = rand(),
185 {{
"XRP",
"USD", 740 + i, 1}, {
"XRP",
"EUR", 740, 1}},
187 oracles.emplace_back(owner, oracle.documentID());
199 BEAST_EXPECT(ret[jss::entire_set][jss::mean] ==
"74.45");
200 BEAST_EXPECT(ret[jss::entire_set][jss::size].
asUInt() == 10);
202 ret[jss::entire_set][jss::standard_deviation] ==
203 "0.3027650354097492");
204 BEAST_EXPECT(ret[jss::median] ==
"74.45");
205 BEAST_EXPECT(ret[jss::time] == 946694900);
216 BEAST_EXPECT(ret[jss::entire_set][jss::mean] ==
"74.45");
217 BEAST_EXPECT(ret[jss::entire_set][jss::size].
asUInt() == 10);
219 ret[jss::entire_set][jss::standard_deviation] ==
220 "0.3027650354097492");
221 BEAST_EXPECT(ret[jss::median] ==
"74.45");
222 BEAST_EXPECT(ret[jss::trimmed_set][jss::mean] ==
"74.45");
223 BEAST_EXPECT(ret[jss::trimmed_set][jss::size].
asUInt() == 6);
225 ret[jss::trimmed_set][jss::standard_deviation] ==
226 "0.187082869338697");
227 BEAST_EXPECT(ret[jss::time] == 946694900);
235 static_cast<int>(env.
current()->fees().base.drops());
239 for (
int i = 0; i < 3; ++i)
243 {.owner = oracles[i].first,
244 .documentID =
asUInt(*oracles[i].second),
250 .
series = {{
"XRP",
"EUR", 740, 1}}, .fee = baseFee});
252 .
series = {{
"XRP",
"EUR", 740, 1}}, .fee = baseFee});
254 .
series = {{
"XRP",
"EUR", 740, 1}}, .fee = baseFee});
256 for (
int i = 3; i < 6; ++i)
260 {.owner = oracles[i].first,
261 .documentID =
asUInt(*oracles[i].second),
267 .
series = {{
"XRP",
"EUR", 740, 1}}, .fee = baseFee});
269 .
series = {{
"XRP",
"EUR", 740, 1}}, .fee = baseFee});
275 BEAST_EXPECT(ret[jss::entire_set][jss::mean] ==
"74.6");
276 BEAST_EXPECT(ret[jss::entire_set][jss::size].
asUInt() == 7);
278 ret[jss::entire_set][jss::standard_deviation] ==
279 "0.2160246899469287");
280 BEAST_EXPECT(ret[jss::median] ==
"74.6");
281 BEAST_EXPECT(ret[jss::trimmed_set][jss::mean] ==
"74.6");
282 BEAST_EXPECT(ret[jss::trimmed_set][jss::size].
asUInt() == 5);
284 ret[jss::trimmed_set][jss::standard_deviation] ==
285 "0.158113883008419");
286 BEAST_EXPECT(ret[jss::time] == 946694900);
293 static_cast<int>(env.
current()->fees().base.drops());
297 for (
int i = 0; i < oracles.
size(); ++i)
301 {.owner = oracles[i].first,
302 .documentID =
asUInt(*oracles[i].second),
308 .
series = {{
"XRP",
"USD", 740, 1}}, .fee = baseFee});
314 BEAST_EXPECT(ret[jss::entire_set][jss::mean] ==
"74");
315 BEAST_EXPECT(ret[jss::entire_set][jss::size].
asUInt() == 8);
316 BEAST_EXPECT(ret[jss::entire_set][jss::standard_deviation] ==
"0");
317 BEAST_EXPECT(ret[jss::median] ==
"74");
318 BEAST_EXPECT(ret[jss::time] == 946695000);