2
0
mirror of https://github.com/boostorg/url.git synced 2026-02-14 13:12:15 +00:00
Files
url/test/unit/rfc/charsets.cpp
2022-01-04 11:42:12 -08:00

117 lines
3.6 KiB
C++

//
// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
// Official repository: https://github.com/CPPAlliance/url
//
// Test that header file is self-contained.
#include <boost/url/rfc/charsets.hpp>
#include <boost/static_assert.hpp>
#include "test_rule.hpp"
#include "test_suite.hpp"
namespace boost {
namespace urls {
BOOST_STATIC_ASSERT(grammar::is_charset<unreserved_chars_t>::value);
BOOST_STATIC_ASSERT(grammar::is_charset<reserved_chars_t>::value);
BOOST_STATIC_ASSERT(grammar::is_charset<gen_delim_chars_t>::value);
BOOST_STATIC_ASSERT(grammar::is_charset<subdelim_chars_t>::value);
BOOST_STATIC_ASSERT(grammar::is_charset<pchars_t>::value);
BOOST_STATIC_ASSERT(grammar::is_charset<query_chars_t>::value);
BOOST_STATIC_ASSERT(grammar::is_charset<fragment_chars_t>::value);
class charsets_test
{
public:
void
testLuts()
{
test_char_set(
unreserved_chars,
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789"
"-._~");
// Need to construct this string_view
// manually because of the leading null
{
char const res[] =
"\x00\x01\x02\x03\x04\x05\x06\x07" "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13\x14\x15\x16\x17" "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21\x22\x23\x24\x25\x26\x27" "\x28\x29\x2a\x2b\x2c" "\x2f"
"\x3a\x3b\x3c\x3d\x3e\x3f"
"\x40"
"\x5b\x5c\x5d\x5e"
"\x60"
"\x7b\x7c\x7d" "\x7f"
"\x80\x81\x82\x83\x84\x85\x86\x87" "\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
"\x90\x91\x92\x93\x94\x95\x96\x97" "\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
"\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7" "\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
"\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7" "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7" "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
"\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7" "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
"\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7" "\xe8\xe9\xea\xeb\xec\xed\xee\xef"
"\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7" "\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff";
test_char_set(
reserved_chars,
string_view(res, sizeof(res) - 1));
}
test_char_set(
gen_delim_chars,
":/?#[]@");
test_char_set(
subdelim_chars,
"!$&()*+,;=\x27");
test_char_set(
pchars,
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789"
"-._~"
"!$&'()*+,;="
":@");
test_char_set(
query_chars,
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789"
"-._~"
"!$&'()*+,;="
":@"
"/?");
test_char_set(
fragment_chars,
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789"
"-._~"
"!$&'()*+,;="
":@"
"/?");
}
void
run()
{
testLuts();
}
};
TEST_SUITE(
charsets_test,
"boost.url.charsets");
} // urls
} // boost