20 #include <ripple/basics/IOUAmount.h>
21 #include <ripple/beast/unit_test.h>
38 BEAST_EXPECT(z.
signum() == 0);
39 BEAST_EXPECT(z == beast::zero);
41 BEAST_EXPECT((z + z) == z);
42 BEAST_EXPECT((z - z) == z);
43 BEAST_EXPECT(z == -z);
46 BEAST_EXPECT(z == zz);
55 BEAST_EXPECT(neg.
signum() < 0);
58 BEAST_EXPECT(zer.
signum() == 0);
61 BEAST_EXPECT(pos.
signum() > 0);
67 testcase(
"beast::Zero Comparisons");
73 BEAST_EXPECT(z == zero);
74 BEAST_EXPECT(z >= zero);
75 BEAST_EXPECT(z <= zero);
76 unexpected(z != zero);
83 BEAST_EXPECT(neg < zero);
84 BEAST_EXPECT(neg <= zero);
85 BEAST_EXPECT(neg != zero);
86 unexpected(neg == zero);
91 BEAST_EXPECT(pos > zero);
92 BEAST_EXPECT(pos >= zero);
93 BEAST_EXPECT(pos != zero);
94 unexpected(pos == zero);
101 testcase(
"IOU Comparisons");
107 BEAST_EXPECT(z == z);
108 BEAST_EXPECT(z >= z);
109 BEAST_EXPECT(z <= z);
110 BEAST_EXPECT(z == -z);
117 BEAST_EXPECT(n <= z);
118 BEAST_EXPECT(n != z);
124 BEAST_EXPECT(p >= z);
125 BEAST_EXPECT(p != z);
131 BEAST_EXPECT(n <= p);
132 BEAST_EXPECT(n != p);
138 BEAST_EXPECT(p >= n);
139 BEAST_EXPECT(p != n);
144 BEAST_EXPECT(p > -p);
145 BEAST_EXPECT(p >= -p);
146 BEAST_EXPECT(p != -p);
148 BEAST_EXPECT(n < -n);
149 BEAST_EXPECT(n <= -n);
150 BEAST_EXPECT(n != -n);
156 testcase(
"IOU strings");
172 testcase(
"mulRatio");
187 BEAST_EXPECT(bigMan ==
mulRatio(bigMan, maxUInt, maxUInt,
true));
189 BEAST_EXPECT(bigMan ==
mulRatio(bigMan, maxUInt, maxUInt,
false));
194 BEAST_EXPECT(bigMan ==
mulRatio(bigMan, maxUInt, maxUInt,
true));
196 BEAST_EXPECT(bigMan ==
mulRatio(bigMan, maxUInt, maxUInt,
false));
203 BEAST_EXPECT(tiny ==
mulRatio(tiny, 1, maxUInt,
true));
204 BEAST_EXPECT(tiny ==
mulRatio(tiny, maxUInt - 1, maxUInt,
true));
206 BEAST_EXPECT(beast::zero ==
mulRatio(tiny, 1, maxUInt,
false));
208 beast::zero ==
mulRatio(tiny, maxUInt - 1, maxUInt,
false));
213 BEAST_EXPECT(beast::zero ==
mulRatio(tinyNeg, 1, maxUInt,
true));
215 beast::zero ==
mulRatio(tinyNeg, maxUInt - 1, maxUInt,
true));
217 BEAST_EXPECT(tinyNeg ==
mulRatio(tinyNeg, 1, maxUInt,
false));
219 tinyNeg ==
mulRatio(tinyNeg, maxUInt - 1, maxUInt,
false));
224 auto const rup =
mulRatio(
one, maxUInt - 1, maxUInt,
true);
225 auto const rdown =
mulRatio(
one, maxUInt - 1, maxUInt,
false);
226 BEAST_EXPECT(rup.mantissa() - rdown.mantissa() == 1);
230 auto const rup =
mulRatio(big, maxUInt - 1, maxUInt,
true);
231 auto const rdown =
mulRatio(big, maxUInt - 1, maxUInt,
false);
232 BEAST_EXPECT(rup.mantissa() - rdown.mantissa() == 1);
237 auto const rup =
mulRatio(negOne, maxUInt - 1, maxUInt,
true);
238 auto const rdown =
mulRatio(negOne, maxUInt - 1, maxUInt,
false);
239 BEAST_EXPECT(rup.mantissa() - rdown.mantissa() == 1);
252 except([&] {
mulRatio(big, 2, 0,
true); });