1#include <xrpld/rpc/Status.h>
3#include <xrpl/basics/contract.h>
4#include <xrpl/beast/unit_test/suite.h>
5#include <xrpl/json/json_value.h>
6#include <xrpl/protocol/ErrorCodes.h>
7#include <xrpl/protocol/TER.h>
8#include <xrpl/protocol/jss.h>
20 template <
typename Type>
33 expect(s.empty(),
"String for OK status");
38 expect(s.empty(),
"String for OK status");
43 expect(s.empty(),
"String for 0 status");
48 expect(s.empty(),
"String for tesSUCCESS");
53 expect(s.empty(),
"String for rpcSUCCESS");
68 expect(s ==
"temBAD_AMOUNT: Malformed: Bad amount.", s);
73 expect(s ==
"badSyntax: Syntax error.", s);
93 template <
typename Type>
121 template <
typename Type>
132 auto prefix = label +
": ";
135 auto error =
value_[jss::error];
136 expect(
bool(error), prefix +
"No error.");
138 auto code = error[jss::code].asInt();
143 auto m = error[jss::message].asString();
144 expect(m == message, m +
" != " + message);
146 auto d = error[jss::data];
147 size_t const s1 = d.size();
148 size_t const s2 = messages.
size();
152 for (
auto i = 0; i <
std::min(s1, s2); ++i)
154 auto ds = d[i].asString();
155 expect(ds == messages[i], prefix + ds +
" != " + messages[i]);
168 {
"An error.",
"Another error."},
169 "badSyntax: Syntax error.");
171 expectFill(
"integer message", 23, {
"Stuff."},
"23");
186 expect(msgs.size() == 1,
"Wrong number of messages");
187 expect(msgs[0] ==
"path=sdcdfd", msgs[0]);
191 expect(
false,
"Didn't catch a Status");
bool expect(Condition const &shouldBeTrue)
Evaluate a test condition.
TestcaseT testcase
Memberspace for declaring test cases.
std::string codeString(Type t)
void run() override
Runs the suite.
void expectFill(std::string const &label, Type status, Status::Strings messages, std::string const &message)
void run() override
Runs the suite.
API version numbers used in later API versions.
BEAST_DEFINE_TESTSUITE(AccountLines, rpc, xrpl)
XRPL_NO_SANITIZE_ADDRESS void Throw(Args &&... args)
Status represents the results of an operation that might fail.
Strings const & messages() const
std::string codeString() const
std::vector< std::string > Strings
TER toTER() const
Returns the Status as a TER.
static constexpr Code kOK
void fillJson(json::Value &)
Fill a json::Value with an RPC 2.0 response.