20 #include <ripple/protocol/TER.h>
21 #include <ripple/beast/unit_test.h>
28 struct TER_test :
public beast::unit_test::suite
33 for (
auto i = -400; i < 400; ++i)
45 BEAST_EXPECT(inRange || !good);
46 BEAST_EXPECT(
transToken(t) == (good ? token :
"-"));
47 BEAST_EXPECT(
transHuman(t) == (good ? text :
"-"));
50 BEAST_EXPECT(good == !!code);
51 BEAST_EXPECT(!code || *code == t);
62 template<std::
size_t I1, std::
size_t I2>
66 template<
typename Tup>
67 void operator()(Tup
const& tup, beast::unit_test::suite&)
const
92 template<std::
size_t, std::
size_t>
class Func,
typename Tup>
103 template<std::
size_t, std::
size_t>
class Func,
typename Tup>
109 testIterate<std::tuple_size<Tup>::value - 1, I2 - 1, Func>(tup, s);
114 template<std::
size_t, std::
size_t>
class Func,
typename Tup>
130 static const int hiIndex {
131 std::tuple_size<decltype (terEnums)>::value - 1};
134 testIterate<hiIndex, hiIndex, NotConvertible> (terEnums, *
this);
137 auto isConvertable = [] (
auto from,
auto to)
156 isConvertable (notTec, notTec);
159 auto notConvertible = [] (
auto from,
auto to)
174 notConvertible (ter, notTec);
175 notConvertible (4, notTec);
184 isConvertable (notTec, ter);
185 isConvertable (ter, ter);
188 notConvertible (4, ter);
198 template<std::
size_t I1, std::
size_t I2>
202 template<
typename Tup>
203 void operator()(Tup
const& tup, beast::unit_test::suite& s)
const
206 auto const lhs = std::get<I1>(tup);
207 auto const rhs = std::get<I2>(tup);
210 decltype (
operator== (lhs, rhs)),
bool>::value,
"== err");
213 decltype (
operator!= (lhs, rhs)),
bool>::value,
"!= err");
216 decltype (
operator< (lhs, rhs)),
bool>::value,
"< err");
219 decltype (
operator<= (lhs, rhs)),
bool>::value,
"<= err");
222 decltype (
operator> (lhs, rhs)),
bool>::value,
"> err");
225 decltype (
operator>= (lhs, rhs)),
bool>::value,
">= err");
246 static const int hiIndex {
247 std::tuple_size<decltype (ters)>::value - 1};
251 testIterate<hiIndex, hiIndex, CheckComparable> (ters, *
this);