@@ -273,13 +273,125 @@ BOOST_AUTO_TEST_CASE(ipv6_address_test_2) {
273273BOOST_CHECK_EQUAL (network::path (instance)," /" );
274274}
275275
276- // BOOST_AUTO_TEST_CASE(ipv6_loopback_test) {
277- // network::uri instance("http://[::1]/");
278- // BOOST_REQUIRE(network::valid(instance));
279- // BOOST_CHECK_EQUAL(network::scheme(instance), "http");
280- // BOOST_CHECK_EQUAL(network::host(instance), "[::1]");
281- // BOOST_CHECK_EQUAL(network::path(instance), "/");
282- // }
276+ BOOST_AUTO_TEST_CASE (ipv6_address_test_3) {
277+ network::uriinstance (" http://[2001:db8:85a3:0:0:8a2e:370:7334]/" );
278+ BOOST_REQUIRE (network::valid (instance));
279+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
280+ BOOST_CHECK_EQUAL (network::host (instance)," [2001:db8:85a3:0:0:8a2e:370:7334]" );
281+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
282+ }
283+
284+ BOOST_AUTO_TEST_CASE (ipv6_address_test_4) {
285+ network::uriinstance (" http://[2001:db8:85a3::8a2e:370:7334]/" );
286+ BOOST_REQUIRE (network::valid (instance));
287+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
288+ BOOST_CHECK_EQUAL (network::host (instance)," [2001:db8:85a3::8a2e:370:7334]" );
289+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
290+ }
291+
292+ BOOST_AUTO_TEST_CASE (ipv6_address_test_5) {
293+ network::uriinstance (" http://[2001:0db8:0000:0000:0000:0000:1428:57ab]/" );
294+ BOOST_REQUIRE (network::valid (instance));
295+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
296+ BOOST_CHECK_EQUAL (network::host (instance)," [2001:0db8:0000:0000:0000:0000:1428:57ab]" );
297+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
298+ }
299+
300+ BOOST_AUTO_TEST_CASE (ipv6_address_test_6) {
301+ network::uriinstance (" http://[2001:0db8:0000:0000:0000::1428:57ab]/" );
302+ BOOST_REQUIRE (network::valid (instance));
303+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
304+ BOOST_CHECK_EQUAL (network::host (instance)," [2001:0db8:0000:0000:0000::1428:57ab]" );
305+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
306+ }
307+
308+ BOOST_AUTO_TEST_CASE (ipv6_address_test_7) {
309+ network::uriinstance (" http://[2001:0db8:0:0:0:0:1428:57ab]/" );
310+ BOOST_REQUIRE (network::valid (instance));
311+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
312+ BOOST_CHECK_EQUAL (network::host (instance)," [2001:0db8:0:0:0:0:1428:57ab]" );
313+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
314+ }
315+
316+ BOOST_AUTO_TEST_CASE (ipv6_address_test_8) {
317+ network::uriinstance (" http://[2001:0db8:0:0::1428:57ab]/" );
318+ BOOST_REQUIRE (network::valid (instance));
319+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
320+ BOOST_CHECK_EQUAL (network::host (instance)," [2001:0db8:0:0::1428:57ab]" );
321+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
322+ }
323+
324+ BOOST_AUTO_TEST_CASE (ipv6_address_test_9) {
325+ network::uriinstance (" http://[2001:0db8::1428:57ab]/" );
326+ BOOST_REQUIRE (network::valid (instance));
327+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
328+ BOOST_CHECK_EQUAL (network::host (instance)," [2001:0db8::1428:57ab]" );
329+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
330+ }
331+
332+ BOOST_AUTO_TEST_CASE (ipv6_address_test_10) {
333+ network::uriinstance (" http://[2001:db8::1428:57ab]/" );
334+ BOOST_REQUIRE (network::valid (instance));
335+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
336+ BOOST_CHECK_EQUAL (network::host (instance)," [2001:db8::1428:57ab]" );
337+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
338+ }
339+
340+ BOOST_AUTO_TEST_CASE (ipv6_address_test_11) {
341+ network::uriinstance (" http://[::ffff:0c22:384e]/" );
342+ BOOST_REQUIRE (network::valid (instance));
343+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
344+ BOOST_CHECK_EQUAL (network::host (instance)," [::ffff:0c22:384e]" );
345+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
346+ }
347+
348+ BOOST_AUTO_TEST_CASE (ipv6_address_test_12) {
349+ network::uriinstance (" http://[fe80::]/" );
350+ BOOST_REQUIRE (network::valid (instance));
351+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
352+ BOOST_CHECK_EQUAL (network::host (instance)," [fe80::]" );
353+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
354+ }
355+
356+ BOOST_AUTO_TEST_CASE (ipv6_address_test_13) {
357+ network::uriinstance (" http://[::ffff:c000:280]/" );
358+ BOOST_REQUIRE (network::valid (instance));
359+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
360+ BOOST_CHECK_EQUAL (network::host (instance)," [::ffff:c000:280]" );
361+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
362+ }
363+
364+ BOOST_AUTO_TEST_CASE (ipv6_loopback_test) {
365+ network::uriinstance (" http://[::1]/" );
366+ BOOST_REQUIRE (network::valid (instance));
367+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
368+ BOOST_CHECK_EQUAL (network::host (instance)," [::1]" );
369+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
370+ }
371+
372+ BOOST_AUTO_TEST_CASE (ipv6_loopback_test_1) {
373+ network::uriinstance (" http://[0000:0000:0000:0000:0000:0000:0000:0001]/" );
374+ BOOST_REQUIRE (network::valid (instance));
375+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
376+ BOOST_CHECK_EQUAL (network::host (instance)," [0000:0000:0000:0000:0000:0000:0000:0001]" );
377+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
378+ }
379+
380+ BOOST_AUTO_TEST_CASE (ipv6_v4inv6_test_1) {
381+ network::uriinstance (" http://[::ffff:12.34.56.78]/" );
382+ BOOST_REQUIRE (network::valid (instance));
383+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
384+ BOOST_CHECK_EQUAL (network::host (instance)," [::ffff:12.34.56.78]" );
385+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
386+ }
387+
388+ BOOST_AUTO_TEST_CASE (ipv6_v4inv6_test_2) {
389+ network::uriinstance (" http://[::ffff:192.0.2.128]/" );
390+ BOOST_REQUIRE (network::valid (instance));
391+ BOOST_CHECK_EQUAL (network::scheme (instance)," http" );
392+ BOOST_CHECK_EQUAL (network::host (instance)," [::ffff:192.0.2.128]" );
393+ BOOST_CHECK_EQUAL (network::path (instance)," /" );
394+ }
283395
284396BOOST_AUTO_TEST_CASE (ftp_test) {
285397 network::uriinstance (" ftp://john.doe@ftp.example.com/" );