xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
tests
libxrpl
beast
Zero.cpp
1
#include <xrpl/beast/utility/Zero.h>
2
3
#include <gtest/gtest.h>
4
5
namespace
beast
{
6
7
struct
AdlTester
8
{
9
};
10
11
int
12
signum
(
AdlTester
)
13
{
14
return
0;
15
}
16
17
namespace
inner_adl_test
{
18
19
struct
AdlTester2
20
{
21
};
22
23
int
24
signum
(
AdlTester2
)
25
{
26
return
0;
27
}
28
29
}
// namespace inner_adl_test
30
31
namespace
{
32
33
struct
IntegerWrapper
34
{
35
int
value;
36
37
IntegerWrapper(
int
v) : value(v)
38
{
39
}
40
41
[[nodiscard]]
int
42
signum
()
const
43
{
44
return
value;
45
}
46
};
47
48
void
49
testLhsZero(IntegerWrapper x)
50
{
51
EXPECT_EQ(x >=
kZero
, x.signum() >= 0);
52
EXPECT_EQ(x >
kZero
, x.signum() > 0);
53
EXPECT_EQ(x ==
kZero
, x.signum() == 0);
54
EXPECT_EQ(x !=
kZero
, x.signum() != 0);
55
EXPECT_EQ(x <
kZero
, x.signum() < 0);
56
EXPECT_EQ(x <=
kZero
, x.signum() <= 0);
57
}
58
59
void
60
testRhsZero(IntegerWrapper x)
61
{
62
EXPECT_EQ(
kZero
>= x, 0 >= x.signum());
63
EXPECT_EQ(
kZero
> x, 0 > x.signum());
64
EXPECT_EQ(
kZero
== x, 0 == x.signum());
65
EXPECT_EQ(
kZero
!= x, 0 != x.signum());
66
EXPECT_EQ(
kZero
< x, 0 < x.signum());
67
EXPECT_EQ(
kZero
<= x, 0 <= x.signum());
68
}
69
70
}
// namespace
71
72
TEST
(
Zero
, lhs)
73
{
74
testLhsZero(-7);
75
testLhsZero(0);
76
testLhsZero(32);
77
}
78
79
TEST
(
Zero
, rhs)
80
{
81
testRhsZero(-4);
82
testRhsZero(0);
83
testRhsZero(64);
84
}
85
86
TEST
(
Zero
, adl)
87
{
88
EXPECT_TRUE(
AdlTester
{} ==
kZero
);
89
EXPECT_TRUE(
inner_adl_test::AdlTester2
{} ==
kZero
);
90
}
91
92
}
// namespace beast
beast::inner_adl_test
Definition
Zero.cpp:17
beast::inner_adl_test::signum
int signum(AdlTester2)
Definition
Zero.cpp:24
beast
Definition
base_uint.h:697
beast::signum
auto signum(T const &t)
Default implementation of signum calls the method on the class.
Definition
Zero.h:37
beast::TEST
TEST(BasicSecondsClock, now)
Definition
tests/libxrpl/beast/basic_seconds_clock.cpp:9
beast::kZero
constexpr Zero kZero
Definition
Zero.h:30
beast::AdlTester
Definition
Zero.cpp:8
beast::Zero
Zero allows classes to offer efficient comparisons to zero.
Definition
Zero.h:26
beast::inner_adl_test::AdlTester2
Definition
Zero.cpp:20
Generated by
1.17.0