20 #include <ripple/protocol/Quality.h>
21 #include <ripple/beast/unit_test.h>
36 template <
class Integer>
46 template <
class Integer>
58 template <
class In,
class Out>
66 template <
class In1,
class Out1,
class Int,
class In2,
class Out2>
69 In1 in, Out1 out, Int limit, In2 in_expected, Out2 out_expected)
71 auto expect_result (
amounts (in_expected, out_expected));
72 auto actual_result (q.ceil_in (
75 BEAST_EXPECT(actual_result == expect_result);
78 template <
class In1,
class Out1,
class Int,
class In2,
class Out2>
81 In1 in, Out1 out, Int limit, In2 in_expected, Out2 out_expected)
83 auto const expect_result (
amounts (in_expected, out_expected));
84 auto const actual_result (q.ceil_out (
87 BEAST_EXPECT(actual_result == expect_result);
159 testcase (
"ceil_out");
228 Quality q (0x5d048191fb9130daull);
229 Amounts
const value (
231 raw (2755280000000000ull, -15));
233 raw (4131113916555555, -16));
234 Amounts
const result (
235 q.ceil_out (value, limit));
236 BEAST_EXPECT(result.in != beast::zero);
245 Quality q (0x59148191fb913522ull);
246 BEAST_EXPECT(q.round(3).rate().getText() ==
"57800");
247 BEAST_EXPECT(q.round(4).rate().getText() ==
"57720");
248 BEAST_EXPECT(q.round(5).rate().getText() ==
"57720");
249 BEAST_EXPECT(q.round(6).rate().getText() ==
"57719.7");
250 BEAST_EXPECT(q.round(7).rate().getText() ==
"57719.64");
251 BEAST_EXPECT(q.round(8).rate().getText() ==
"57719.636");
252 BEAST_EXPECT(q.round(9).rate().getText() ==
"57719.6353");
253 BEAST_EXPECT(q.round(10).rate().getText() ==
"57719.63526");
254 BEAST_EXPECT(q.round(11).rate().getText() ==
"57719.635251");
255 BEAST_EXPECT(q.round(12).rate().getText() ==
"57719.6352506");
256 BEAST_EXPECT(q.round(13).rate().getText() ==
"57719.63525052");
257 BEAST_EXPECT(q.round(14).rate().getText() ==
"57719.635250517");
258 BEAST_EXPECT(q.round(15).rate().getText() ==
"57719.6352505169");
259 BEAST_EXPECT(q.round(16).rate().getText() ==
"57719.63525051682");
265 testcase (
"comparisons");
271 Quality
const q11 (Amounts (amount1, amount1));
272 Quality
const q12 (Amounts (amount1, amount2));
273 Quality
const q13 (Amounts (amount1, amount3));
274 Quality
const q21 (Amounts (amount2, amount1));
275 Quality
const q31 (Amounts (amount3, amount1));
277 BEAST_EXPECT(q11 == q11);
278 BEAST_EXPECT(q11 < q12);
279 BEAST_EXPECT(q12 < q13);
280 BEAST_EXPECT(q31 < q21);
281 BEAST_EXPECT(q21 < q11);
282 BEAST_EXPECT(q11 >= q11);
283 BEAST_EXPECT(q12 >= q11);
284 BEAST_EXPECT(q13 >= q12);
285 BEAST_EXPECT(q21 >= q31);
286 BEAST_EXPECT(q11 >= q21);
287 BEAST_EXPECT(q12 > q11);
288 BEAST_EXPECT(q13 > q12);
289 BEAST_EXPECT(q21 > q31);
290 BEAST_EXPECT(q11 > q21);
291 BEAST_EXPECT(q11 <= q11);
292 BEAST_EXPECT(q11 <= q12);
293 BEAST_EXPECT(q12 <= q13);
294 BEAST_EXPECT(q31 <= q21);
295 BEAST_EXPECT(q21 <= q11);
296 BEAST_EXPECT(q31 != q21);
302 testcase (
"composition");
308 Quality
const q11 (Amounts (amount1, amount1));
309 Quality
const q12 (Amounts (amount1, amount2));
310 Quality
const q13 (Amounts (amount1, amount3));
311 Quality
const q21 (Amounts (amount2, amount1));
312 Quality
const q31 (Amounts (amount3, amount1));
317 Quality
const q13_31 (
319 Quality
const q31_13 (
322 BEAST_EXPECT(q13_31 == q31_13);
323 BEAST_EXPECT(q13_31 == q11);
329 testcase (
"operations");
331 Quality
const q11 (Amounts (
338 BEAST_EXPECT(qa == qb);
339 BEAST_EXPECT(++qa != q11);
340 BEAST_EXPECT(qa != qb);
341 BEAST_EXPECT(--qb != q11);
342 BEAST_EXPECT(qa != qb);
343 BEAST_EXPECT(qb < qa);
344 BEAST_EXPECT(qb++ < qa);
345 BEAST_EXPECT(qb++ < qa);
346 BEAST_EXPECT(qb++ == qa);
347 BEAST_EXPECT(qa < qb);