Skip to content

Commit 868dd23

Browse files
committed
[uri] Added tests for boost::asio::ip::address overloads in builder::set_host.
1 parent 302c717 commit 868dd23

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed

boost/network/uri/builder.hpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010

1111
# include <boost/network/uri/uri.hpp>
12+
# include <boost/asio/ip/address.hpp>
1213

1314

1415
namespace boost {
@@ -62,6 +63,38 @@ class builder {
6263
return set_host(host);
6364
}
6465

66+
builder &set_host(const asio::ip::address &address) {
67+
uri_.uri_.append(address.to_string());
68+
uri_.parse();
69+
return *this;
70+
}
71+
72+
builder &host(const asio::ip::address &host) {
73+
return set_host(host);
74+
}
75+
76+
builder &set_host(const asio::ip::address_v4 &address) {
77+
uri_.uri_.append(address.to_string());
78+
uri_.parse();
79+
return *this;
80+
}
81+
82+
builder &host(const asio::ip::address_v4 &host) {
83+
return set_host(host);
84+
}
85+
86+
builder &set_host(const asio::ip::address_v6 &address) {
87+
uri_.uri_.append("[");
88+
uri_.uri_.append(address.to_string());
89+
uri_.uri_.append("]");
90+
uri_.parse();
91+
return *this;
92+
}
93+
94+
builder &host(const asio::ip::address_v6 &host) {
95+
return set_host(host);
96+
}
97+
6598
builder &set_port(const string_type &port) {
6699
uri_.uri_.append(":");
67100
uri_.uri_.append(port);

libs/network/test/uri/uri_builder_test.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,3 +146,29 @@ BOOST_AUTO_TEST_CASE(mailto_builder_test)
146146
BOOST_REQUIRE(uri::valid(instance));
147147
BOOST_CHECK_EQUAL("mailto:[email protected]", instance.string());
148148
}
149+
150+
BOOST_AUTO_TEST_CASE(ipv4_address) {
151+
using namespace boost::asio::ip;
152+
uri::uri instance;
153+
uri::builder builder(instance);
154+
builder
155+
.scheme("http")
156+
.host(address_v4::loopback())
157+
.path("/")
158+
;
159+
BOOST_REQUIRE(uri::valid(instance));
160+
BOOST_CHECK_EQUAL("http://127.0.0.1/", instance.string());
161+
}
162+
163+
//BOOST_AUTO_TEST_CASE(ipv6_address) {
164+
// using namespace boost::asio::ip;
165+
// uri::uri instance;
166+
// uri::builder builder(instance);
167+
// builder
168+
// .scheme("http")
169+
// .host(address_v6::loopback())
170+
// .path("/")
171+
// ;
172+
// BOOST_REQUIRE(uri::valid(instance));
173+
// BOOST_CHECK_EQUAL("http://[::1]/", instance.string());
174+
//}

libs/network/test/uri/uri_test.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,14 @@ BOOST_AUTO_TEST_CASE(ipv4_address_test) {
249249
BOOST_CHECK_EQUAL(uri::path(instance), "/");
250250
}
251251

252+
BOOST_AUTO_TEST_CASE(ipv4_loopback_test) {
253+
uri::uri instance("http://127.0.0.1/");
254+
BOOST_REQUIRE(uri::valid(instance));
255+
BOOST_CHECK_EQUAL(uri::scheme(instance), "http");
256+
BOOST_CHECK_EQUAL(uri::host(instance), "127.0.0.1");
257+
BOOST_CHECK_EQUAL(uri::path(instance), "/");
258+
}
259+
252260
BOOST_AUTO_TEST_CASE(ipv6_address_test_1) {
253261
uri::uri instance("http://[1080:0:0:0:8:800:200C:417A]/");
254262
BOOST_REQUIRE(uri::valid(instance));
@@ -265,6 +273,14 @@ BOOST_AUTO_TEST_CASE(ipv6_address_test_2) {
265273
BOOST_CHECK_EQUAL(uri::path(instance), "/");
266274
}
267275

276+
//BOOST_AUTO_TEST_CASE(ipv6_loopback_test) {
277+
// uri::uri instance("http://[::1]/");
278+
// BOOST_REQUIRE(uri::valid(instance));
279+
// BOOST_CHECK_EQUAL(uri::scheme(instance), "http");
280+
// BOOST_CHECK_EQUAL(uri::host(instance), "[::1]");
281+
// BOOST_CHECK_EQUAL(uri::path(instance), "/");
282+
//}
283+
268284
BOOST_AUTO_TEST_CASE(ftp_test) {
269285
uri::uri instance("ftp://[email protected]/");
270286
BOOST_REQUIRE(uri::valid(instance));

0 commit comments

Comments
 (0)