1#include <xrpl/basics/Slice.h> 
    2#include <xrpl/basics/StringUtilities.h> 
    3#include <xrpl/basics/ToString.h> 
    4#include <xrpl/beast/unit_test.h> 
   53            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme://"));
 
   54            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
   58            BEAST_EXPECT(!pUrl.
port);
 
   68            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme:///"));
 
   69            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
   73            BEAST_EXPECT(!pUrl.
port);
 
   74            BEAST_EXPECT(pUrl.
path == 
"/");
 
   79            BEAST_EXPECT(
parseUrl(pUrl, 
"lower://domain"));
 
   80            BEAST_EXPECT(pUrl.
scheme == 
"lower");
 
   83            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
   84            BEAST_EXPECT(!pUrl.
port);
 
   90            BEAST_EXPECT(
parseUrl(pUrl, 
"UPPER://domain:234/"));
 
   91            BEAST_EXPECT(pUrl.
scheme == 
"upper");
 
   94            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
   95            BEAST_EXPECT(*pUrl.
port == 234);
 
   96            BEAST_EXPECT(pUrl.
path == 
"/");
 
  101            BEAST_EXPECT(
parseUrl(pUrl, 
"Mixed://domain/path"));
 
  102            BEAST_EXPECT(pUrl.
scheme == 
"mixed");
 
  105            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
  106            BEAST_EXPECT(!pUrl.
port);
 
  107            BEAST_EXPECT(pUrl.
path == 
"/path");
 
  112            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme://[::1]:123/path"));
 
  113            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  116            BEAST_EXPECT(pUrl.
domain == 
"::1");
 
  117            BEAST_EXPECT(*pUrl.
port == 123);
 
  118            BEAST_EXPECT(pUrl.
path == 
"/path");
 
  124                parseUrl(pUrl, 
"scheme://user:pass@domain:123/abc:321"));
 
  125            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  126            BEAST_EXPECT(pUrl.
username == 
"user");
 
  127            BEAST_EXPECT(pUrl.
password == 
"pass");
 
  128            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
  129            BEAST_EXPECT(*pUrl.
port == 123);
 
  130            BEAST_EXPECT(pUrl.
path == 
"/abc:321");
 
  135            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme://user@domain:123/abc:321"));
 
  136            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  137            BEAST_EXPECT(pUrl.
username == 
"user");
 
  139            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
  140            BEAST_EXPECT(*pUrl.
port == 123);
 
  141            BEAST_EXPECT(pUrl.
path == 
"/abc:321");
 
  146            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme://:pass@domain:123/abc:321"));
 
  147            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  149            BEAST_EXPECT(pUrl.
password == 
"pass");
 
  150            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
  151            BEAST_EXPECT(*pUrl.
port == 123);
 
  152            BEAST_EXPECT(pUrl.
path == 
"/abc:321");
 
  157            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme://domain:123/abc:321"));
 
  158            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  161            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
  162            BEAST_EXPECT(*pUrl.
port == 123);
 
  163            BEAST_EXPECT(pUrl.
path == 
"/abc:321");
 
  168            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme://user:pass@domain/abc:321"));
 
  169            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  170            BEAST_EXPECT(pUrl.
username == 
"user");
 
  171            BEAST_EXPECT(pUrl.
password == 
"pass");
 
  172            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
  173            BEAST_EXPECT(!pUrl.
port);
 
  174            BEAST_EXPECT(pUrl.
path == 
"/abc:321");
 
  179            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme://user@domain/abc:321"));
 
  180            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  181            BEAST_EXPECT(pUrl.
username == 
"user");
 
  183            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
  184            BEAST_EXPECT(!pUrl.
port);
 
  185            BEAST_EXPECT(pUrl.
path == 
"/abc:321");
 
  190            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme://:pass@domain/abc:321"));
 
  191            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  193            BEAST_EXPECT(pUrl.
password == 
"pass");
 
  194            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
  195            BEAST_EXPECT(!pUrl.
port);
 
  196            BEAST_EXPECT(pUrl.
path == 
"/abc:321");
 
  201            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme://domain/abc:321"));
 
  202            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  205            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
  206            BEAST_EXPECT(!pUrl.
port);
 
  207            BEAST_EXPECT(pUrl.
path == 
"/abc:321");
 
  212            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme:///path/to/file"));
 
  213            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  217            BEAST_EXPECT(!pUrl.
port);
 
  218            BEAST_EXPECT(pUrl.
path == 
"/path/to/file");
 
  224                parseUrl(pUrl, 
"scheme://user:pass@domain/path/with/an@sign"));
 
  225            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  226            BEAST_EXPECT(pUrl.
username == 
"user");
 
  227            BEAST_EXPECT(pUrl.
password == 
"pass");
 
  228            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
  229            BEAST_EXPECT(!pUrl.
port);
 
  230            BEAST_EXPECT(pUrl.
path == 
"/path/with/an@sign");
 
  235            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme://domain/path/with/an@sign"));
 
  236            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  239            BEAST_EXPECT(pUrl.
domain == 
"domain");
 
  240            BEAST_EXPECT(!pUrl.
port);
 
  241            BEAST_EXPECT(pUrl.
path == 
"/path/with/an@sign");
 
  246            BEAST_EXPECT(
parseUrl(pUrl, 
"scheme://:999/"));
 
  247            BEAST_EXPECT(pUrl.
scheme == 
"scheme");
 
  250            BEAST_EXPECT(pUrl.
domain == 
":999");
 
  251            BEAST_EXPECT(!pUrl.
port);
 
  252            BEAST_EXPECT(pUrl.
path == 
"/");
 
  257            BEAST_EXPECT(
parseUrl(pUrl, 
"http://::1:1234/validators"));
 
  258            BEAST_EXPECT(pUrl.
scheme == 
"http");
 
  261            BEAST_EXPECT(pUrl.
domain == 
"::0.1.18.52");
 
  262            BEAST_EXPECT(!pUrl.
port);
 
  263            BEAST_EXPECT(pUrl.
path == 
"/validators");
 
  270            BEAST_EXPECT(!
parseUrl(pUrl, 
"nonsense"));
 
  271            BEAST_EXPECT(!
parseUrl(pUrl, 
"://"));
 
  272            BEAST_EXPECT(!
parseUrl(pUrl, 
":///"));
 
  274                !
parseUrl(pUrl, 
"scheme://user:pass@domain:65536/abc:321"));
 
  275            BEAST_EXPECT(!
parseUrl(pUrl, 
"UPPER://domain:23498765/"));
 
  276            BEAST_EXPECT(!
parseUrl(pUrl, 
"UPPER://domain:0/"));
 
  277            BEAST_EXPECT(!
parseUrl(pUrl, 
"UPPER://domain:+7/"));
 
  278            BEAST_EXPECT(!
parseUrl(pUrl, 
"UPPER://domain:-7234/"));
 
  279            BEAST_EXPECT(!
parseUrl(pUrl, 
"UPPER://domain:@#$56!/"));
 
  285            BEAST_EXPECT(!
parseUrl(pUrl, strUrl));
 
 
  294        BEAST_EXPECT(result == 
"hello");
 
 
 
  306BEAST_DEFINE_TESTSUITE(StringUtilities, basics, 
ripple);
 
testcase_t testcase
Memberspace for declaring test cases.
 
void testUnHexSuccess(std::string const &strIn, std::string const &strExpected)
 
void testUnHexFailure(std::string const &strIn)
 
void run() override
Runs the suite.
 
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
 
std::optional< Blob > strUnHex(std::size_t strSize, Iterator begin, Iterator end)
 
bool parseUrl(parsedURL &pUrl, std::string const &strUrl)
 
std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)
 
std::string to_string(base_uint< Bits, Tag > const &a)
 
std::optional< std::uint16_t > port