33TEST(XRPAmountTest, beast_zero)
37 for (
auto i : {-1, 0, 1})
41 EXPECT_TRUE((i == 0) == (x == kZero));
42 EXPECT_TRUE((i != 0) == (x != kZero));
43 EXPECT_TRUE((i < 0) == (x < kZero));
44 EXPECT_TRUE((i > 0) == (x > kZero));
45 EXPECT_TRUE((i <= 0) == (x <= kZero));
46 EXPECT_TRUE((i >= 0) == (x >= kZero));
48 EXPECT_TRUE((0 == i) == (kZero == x));
49 EXPECT_TRUE((0 != i) == (kZero != x));
50 EXPECT_TRUE((0 < i) == (kZero < x));
51 EXPECT_TRUE((0 > i) == (kZero > x));
52 EXPECT_TRUE((0 <= i) == (kZero <= x));
53 EXPECT_TRUE((0 >= i) == (kZero >= x));
57TEST(XRPAmountTest, comparisons)
59 for (
auto i : {-1, 0, 1})
63 for (
auto j : {-1, 0, 1})
67 EXPECT_EQ((i == j), (x == y));
68 EXPECT_EQ((i != j), (x != y));
69 EXPECT_EQ((i < j), (x < y));
70 EXPECT_EQ((i > j), (x > y));
71 EXPECT_EQ((i <= j), (x <= y));
72 EXPECT_EQ((i >= j), (x >= y));
205 EXPECT_EQ(big,
mulRatio(big, kMaxUInt32, kMaxUInt32,
true));
207 EXPECT_EQ(big,
mulRatio(big, kMaxUInt32, kMaxUInt32,
false));
212 EXPECT_EQ(
mulRatio(big, 3, 4,
false).value(), (big.
value() / 4) * 3);
213 EXPECT_EQ(
mulRatio(big, 3, 4,
true).value(), (big.
value() / 4) * 3);
214 EXPECT_EQ(big.
value() % 4, 0);
215 EXPECT_GT(big.
value(), kMaxXrp / 3);
216 EXPECT_LE(big.
value() / 4, kMaxXrp / 3);
222 EXPECT_EQ(big,
mulRatio(big, kMaxUInt32, kMaxUInt32,
true));
224 EXPECT_EQ(big,
mulRatio(big, kMaxUInt32, kMaxUInt32,
false));
228 EXPECT_EQ(
mulRatio(big, 3, 4,
false).value(), (big.
value() / 4) * 3);
229 EXPECT_EQ(
mulRatio(big, 3, 4,
true).value(), (big.
value() / 4) * 3);
230 EXPECT_EQ(big.
value() % 4, 0);
231 EXPECT_LT(big.
value(), kMinXrp / 3);
232 EXPECT_GE(big.
value() / 4, kMinXrp / 3);
239 EXPECT_EQ(tiny,
mulRatio(tiny, 1, kMaxUInt32,
true));
250 EXPECT_EQ(tinyNeg,
mulRatio(tinyNeg, kMaxUInt32 - 1, kMaxUInt32,
false));
256 auto const rup =
mulRatio(one, kMaxUInt32 - 1, kMaxUInt32,
true);
257 auto const rdown =
mulRatio(one, kMaxUInt32 - 1, kMaxUInt32,
false);
258 EXPECT_EQ(rup.drops() - rdown.drops(), 1);
263 auto const rup =
mulRatio(big, kMaxUInt32 - 1, kMaxUInt32,
true);
264 auto const rdown =
mulRatio(big, kMaxUInt32 - 1, kMaxUInt32,
false);
265 EXPECT_EQ(rup.drops() - rdown.drops(), 1);
270 auto const rup =
mulRatio(negOne, kMaxUInt32 - 1, kMaxUInt32,
true);
271 auto const rdown =
mulRatio(negOne, kMaxUInt32 - 1, kMaxUInt32,
false);
272 EXPECT_EQ(rup.drops() - rdown.drops(), 1);
279 EXPECT_ANY_THROW({
mulRatio(one, 1, 0,
true); });
285 EXPECT_ANY_THROW({
mulRatio(big, 2, 1,
true); });
290 XRPAmount const bigNegative(kMinXrp + 10);
291 EXPECT_EQ(
mulRatio(bigNegative, 2, 1,
true), kMinXrp);