Index: ppapi/tests/test_net_address_private.cc |
diff --git a/ppapi/tests/test_net_address_private.cc b/ppapi/tests/test_net_address_private.cc |
index dc634ce14ce0b7158f70c8fdc04a54704a1795de..d72f86903b4c24e5743cc04cbf4f05d03039f159 100644 |
--- a/ppapi/tests/test_net_address_private.cc |
+++ b/ppapi/tests/test_net_address_private.cc |
@@ -34,6 +34,7 @@ using pp::NetAddressPrivate; |
namespace { |
+// |host| should be an IP address represented as text, e.g., "192.168.0.1". |
PP_NetAddress_Private MakeIPv4NetAddress(const char* host, int port) { |
PP_NetAddress_Private addr = PP_NetAddress_Private(); |
addr.size = sizeof(sockaddr_in); |
@@ -44,7 +45,20 @@ PP_NetAddress_Private MakeIPv4NetAddress(const char* host, int port) { |
return addr; |
} |
-// TODO(viettrungluu): Also add IPv6 tests. |
+// |host| should be an array of eight 16-bit numbers. |
+PP_NetAddress_Private MakeIPv6NetAddress(const uint16_t host[], uint16_t port, |
+ uint32_t scope_id) { |
+ PP_NetAddress_Private addr = PP_NetAddress_Private(); |
+ addr.size = sizeof(sockaddr_in6); |
+ sockaddr_in6* a = reinterpret_cast<sockaddr_in6*>(addr.data); |
+ a->sin6_family = AF_INET6; |
+ a->sin6_port = htons(port); |
+ a->sin6_flowinfo = 0; |
dmichael (off chromium)
2011/11/17 04:41:46
Would it maybe be safer to use a sockaddr_in6 on t
viettrungluu
2011/11/17 20:22:56
That's a good point, though in that case I should
|
+ for (int i = 0; i < 8; i++) |
+ a->sin6_addr.s6_addr16[i] = htons(host[i]); |
+ a->sin6_scope_id = scope_id; |
+ return addr; |
+} |
} // namespace |
@@ -64,6 +78,8 @@ void TestNetAddressPrivate::RunTest() { |
RUN_TEST(Describe); |
RUN_TEST(ReplacePort); |
RUN_TEST(GetAnyAddress); |
+ |
+ RUN_TEST(DescribeIPv6); |
} |
std::string TestNetAddressPrivate::TestAreEqual() { |
@@ -155,3 +171,58 @@ std::string TestNetAddressPrivate::TestGetAnyAddress() { |
PASS(); |
} |
+ |
+// TODO(viettrungluu): More IPv6 tests needed. |
+ |
+std::string TestNetAddressPrivate::TestDescribeIPv6() { |
+ static const uint16_t a1[8] = { 0x1234, 0xabcd, 0, 0x0001, 0, 0, 0, 0xcdef }; |
+ PP_NetAddress_Private addr1 = MakeIPv6NetAddress(a1, 1234, 789); |
+ ASSERT_EQ("1234:abcd:0:1::cdef%789", |
+ NetAddressPrivate::Describe(addr1, false)); |
+ ASSERT_EQ("[1234:abcd:0:1::cdef%789]:1234", |
+ NetAddressPrivate::Describe(addr1, true)); |
+ |
+ static const uint16_t a2[8] = { 0x12, 0xabcd, 0, 0x0001, 0, 0, 0, 0xcdef }; |
+ PP_NetAddress_Private addr2 = MakeIPv6NetAddress(a2, 12, 0); |
+ ASSERT_EQ("12:abcd:0:1::cdef", |
+ NetAddressPrivate::Describe(addr2, false)); |
+ ASSERT_EQ("[12:abcd:0:1::cdef]:12", |
+ NetAddressPrivate::Describe(addr2, true)); |
+ |
+ static const uint16_t a3[8] = { 0, 0, 0, 0x0123, 0, 0, 0, 0 }; |
+ PP_NetAddress_Private addr3 = MakeIPv6NetAddress(a3, 123, 0); |
+ ASSERT_EQ("0:0:0:123::", |
+ NetAddressPrivate::Describe(addr3, false)); |
+ ASSERT_EQ("[0:0:0:123::]:123", |
+ NetAddressPrivate::Describe(addr3, true)); |
+ |
+ static const uint16_t a4[8] = { 0x1234, 0xabcd, 0, 0, 0xff, 0, 0, 0xcdef }; |
+ PP_NetAddress_Private addr4 = MakeIPv6NetAddress(a4, 123, 0); |
+ ASSERT_EQ("1234:abcd::ff:0:0:cdef", |
+ NetAddressPrivate::Describe(addr4, false)); |
+ ASSERT_EQ("[1234:abcd::ff:0:0:cdef]:123", |
+ NetAddressPrivate::Describe(addr4, true)); |
+ |
+ static const uint16_t a5[8] = { 0, 0xa, 1, 2, 3, 0, 5, 0 }; |
+ PP_NetAddress_Private addr5 = MakeIPv6NetAddress(a5, 123, 0); |
+ ASSERT_EQ("0:a:1:2:3:0:5:0", |
+ NetAddressPrivate::Describe(addr5, false)); |
+ ASSERT_EQ("[0:a:1:2:3:0:5:0]:123", |
+ NetAddressPrivate::Describe(addr5, true)); |
+ |
+ static const uint16_t a6[8] = { 0, 0xa, 1, 2, 3, 0, 0, 0 }; |
+ PP_NetAddress_Private addr6 = MakeIPv6NetAddress(a6, 123, 0); |
+ ASSERT_EQ("0:a:1:2:3::", |
+ NetAddressPrivate::Describe(addr6, false)); |
+ ASSERT_EQ("[0:a:1:2:3::]:123", |
+ NetAddressPrivate::Describe(addr6, true)); |
+ |
+ static const uint16_t a7[8] = { 0, 0, 0, 2, 3, 0, 0, 0 }; |
+ PP_NetAddress_Private addr7 = MakeIPv6NetAddress(a7, 123, 0); |
+ ASSERT_EQ("::2:3:0:0:0", |
+ NetAddressPrivate::Describe(addr7, false)); |
+ ASSERT_EQ("[::2:3:0:0:0]:123", |
+ NetAddressPrivate::Describe(addr7, true)); |
+ |
+ PASS(); |
+} |