Skip to content

Commit 766dc7a

Browse files
committed
[URI] Added test for opaqueness.
1 parent 71040ee commit 766dc7a

File tree

7 files changed

+28
-26
lines changed

7 files changed

+28
-26
lines changed

boost/network/uri/builder.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class builder {
2727

2828
builder &scheme(const string_type &scheme) {
2929
uri_.uri_.append(scheme);
30-
if (non_hierarchical_schemes::exists(scheme)) {
30+
if (opaque_schemes::exists(scheme)) {
3131
uri_.uri_.append(":");
3232
}
3333
else {

boost/network/uri/directives/scheme.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ struct scheme_directive {
2727
>
2828
void operator () (Uri &uri) const {
2929
uri.append(scheme);
30-
if (non_hierarchical_schemes::exists(scheme)) {
30+
if (opaque_schemes::exists(scheme)) {
3131
uri.append(":");
3232
}
3333
else {

boost/network/uri/schemes.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class hierarchical_schemes {
2222

2323
};
2424

25-
class non_hierarchical_schemes {
25+
class opaque_schemes {
2626

2727
public:
2828

boost/network/uri/uri.hpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,11 +284,21 @@ bool is_absolute(const uri &uri_) {
284284
return uri_.is_valid() && !boost::empty(uri_.scheme_range());
285285
}
286286

287+
inline
288+
bool is_relative(const uri &uri_) {
289+
return uri_.is_valid() && boost::empty(uri_.scheme_range());
290+
}
291+
287292
inline
288293
bool is_hierarchical(const uri &uri_) {
289294
return is_absolute(uri_) && hierarchical_schemes::exists(scheme(uri_));
290295
}
291296

297+
inline
298+
bool is_opaque(const uri &uri_) {
299+
return is_absolute(uri_) && opaque_schemes::exists(scheme(uri_));
300+
}
301+
292302
inline
293303
bool is_valid(const uri &uri_) {
294304
return valid(uri_);

libs/network/src/uri/parse.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ struct uri_grammar : qi::grammar<
188188
;
189189

190190
start %=
191-
-(scheme >> ':')
191+
(scheme >> ':')
192192
>> hier_part
193193
>> -('?' >> query)
194194
>> -('#' >> fragment)

libs/network/src/uri/schemes.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace network {
1313
namespace uri {
1414
namespace {
1515
static boost::unordered_set<std::string> hierarchical_schemes_;
16-
static boost::unordered_set<std::string> non_hierarchical_schemes_;
16+
static boost::unordered_set<std::string> opaque_schemes_;
1717

1818
bool register_hierarchical_schemes() {
1919
hierarchical_schemes_.insert("http");
@@ -36,27 +36,27 @@ bool register_hierarchical_schemes() {
3636
return true;
3737
}
3838

39-
bool register_non_hierarchical_schemes() {
40-
non_hierarchical_schemes_.insert("mailto");
41-
non_hierarchical_schemes_.insert("news");
42-
non_hierarchical_schemes_.insert("im");
43-
non_hierarchical_schemes_.insert("sip");
44-
non_hierarchical_schemes_.insert("sms");
45-
non_hierarchical_schemes_.insert("xmpp");
39+
bool register_opaque_schemes() {
40+
opaque_schemes_.insert("mailto");
41+
opaque_schemes_.insert("news");
42+
opaque_schemes_.insert("im");
43+
opaque_schemes_.insert("sip");
44+
opaque_schemes_.insert("sms");
45+
opaque_schemes_.insert("xmpp");
4646
return true;
4747
}
4848

4949

5050
static bool hierarchical = register_hierarchical_schemes();
51-
static bool non_hierarchical = register_non_hierarchical_schemes();
51+
static bool opaque = register_opaque_schemes();
5252
} // namespace
5353

5454
bool hierarchical_schemes::exists(const std::string &scheme) {
5555
return hierarchical_schemes_.end() != hierarchical_schemes_.find(scheme);
5656
}
5757

58-
bool non_hierarchical_schemes::exists(const std::string &scheme) {
59-
return non_hierarchical_schemes_.end() != non_hierarchical_schemes_.find(scheme);
58+
bool opaque_schemes::exists(const std::string &scheme) {
59+
return opaque_schemes_.end() != opaque_schemes_.find(scheme);
6060
}
6161
} // namespace uri
6262
} // namespace network

libs/network/test/uri/relative_url_test.cpp

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,7 @@
1212
using namespace boost::network;
1313

1414
BOOST_AUTO_TEST_CASE(relative_uri_test) {
15-
uri::uri instance("www.example.com/");
16-
BOOST_REQUIRE(uri::valid(instance));
17-
BOOST_CHECK(uri::is_absolute(instance));
18-
BOOST_CHECK_EQUAL(uri::path(instance), "www.example.com/");
19-
}
20-
21-
BOOST_AUTO_TEST_CASE(relative_uri_scheme_test) {
22-
uri::uri instance("www.example.com/");
23-
BOOST_REQUIRE(instance.scheme_range());
24-
BOOST_CHECK(instance.begin() == boost::begin(instance.scheme_range()));
25-
BOOST_CHECK(instance.begin() == boost::end(instance.scheme_range()));
15+
// don't yet support relative URIs
16+
uri::uri instance("example.com");
17+
BOOST_REQUIRE(!uri::valid(instance));
2618
}

0 commit comments

Comments
 (0)