| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ppapi/tests/test_net_address_private.h" | 5 #include "ppapi/tests/test_net_address_private.h" |
| 6 | 6 |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include "ppapi/cpp/private/net_address_private.h" | 9 #include "ppapi/cpp/private/net_address_private.h" |
| 10 #include "ppapi/c/private/ppb_net_address_private.h" | 10 #include "ppapi/c/private/ppb_net_address_private.h" |
| 11 #include "ppapi/tests/test_utils.h" | 11 #include "ppapi/tests/test_utils.h" |
| 12 #include "ppapi/tests/testing_instance.h" | 12 #include "ppapi/tests/testing_instance.h" |
| 13 | 13 |
| 14 // Other than |GetAnyAddress()|, there's no way to actually get | |
| 15 // |PP_NetAddress_Private| structs from just this interface. We'll cheat and | |
| 16 // synthesize some. | |
| 17 | |
| 18 #if defined(PPAPI_POSIX) | |
| 19 #include <arpa/inet.h> | |
| 20 #include <netdb.h> | |
| 21 #include <netinet/in.h> | |
| 22 #include <sys/socket.h> | |
| 23 #endif | |
| 24 | |
| 25 #if defined(PPAPI_OS_MACOSX) | |
| 26 // This is a bit evil, but it's standard operating procedure for |s6_addr|.... | |
| 27 #define s6_addr16 __u6_addr.__u6_addr16 | |
| 28 #endif | |
| 29 | |
| 30 #if defined(PPAPI_OS_WIN) | |
| 31 #include <ws2tcpip.h> | |
| 32 | |
| 33 #define s6_addr16 u.Word | |
| 34 #endif | |
| 35 | |
| 36 using pp::NetAddressPrivate; | 14 using pp::NetAddressPrivate; |
| 37 | 15 |
| 38 namespace { | 16 namespace { |
| 39 | 17 |
| 40 // |host| should be an IP address represented as text, e.g., "192.168.0.1". | 18 PP_NetAddress_Private MakeIPv4NetAddress(const uint8_t host[4], int port) { |
| 41 PP_NetAddress_Private MakeIPv4NetAddress(const char* host, int port) { | 19 PP_NetAddress_Private addr; |
| 42 PP_NetAddress_Private addr = PP_NetAddress_Private(); | 20 NetAddressPrivate::CreateFromIPv4Address(host, port, &addr); |
| 43 addr.size = sizeof(sockaddr_in); | |
| 44 sockaddr_in* a = reinterpret_cast<sockaddr_in*>(addr.data); | |
| 45 a->sin_family = AF_INET; | |
| 46 a->sin_port = htons(port); | |
| 47 a->sin_addr.s_addr = inet_addr(host); | |
| 48 return addr; | 21 return addr; |
| 49 } | 22 } |
| 50 | 23 |
| 51 // |host| should be an array of eight 16-bit numbers. | 24 PP_NetAddress_Private MakeIPv6NetAddress(const uint16_t host[8], uint16_t port, |
| 52 PP_NetAddress_Private MakeIPv6NetAddress(const uint16_t host[], uint16_t port, | |
| 53 uint32_t scope_id) { | 25 uint32_t scope_id) { |
| 54 PP_NetAddress_Private addr = PP_NetAddress_Private(); | 26 PP_NetAddress_Private addr = PP_NetAddress_Private(); |
| 55 addr.size = sizeof(sockaddr_in6); | 27 uint8_t ip[16]; |
| 56 sockaddr_in6* a = reinterpret_cast<sockaddr_in6*>(addr.data); | 28 for(int i = 0; i < 8; ++i) { |
| 57 a->sin6_family = AF_INET6; | 29 ip[i * 2] = host[i] >> 8; |
| 58 a->sin6_port = htons(port); | 30 ip[i * 2 + 1] = host[i] & 0xff; |
| 59 a->sin6_flowinfo = 0; | 31 } |
| 60 for (int i = 0; i < 8; i++) | 32 NetAddressPrivate::CreateFromIPv6Address(ip, scope_id, port, &addr); |
| 61 a->sin6_addr.s6_addr16[i] = htons(host[i]); | |
| 62 a->sin6_scope_id = scope_id; | |
| 63 return addr; | 33 return addr; |
| 64 } | 34 } |
| 65 | 35 |
| 66 } // namespace | 36 } // namespace |
| 67 | 37 |
| 68 REGISTER_TEST_CASE(NetAddressPrivate); | 38 REGISTER_TEST_CASE(NetAddressPrivate); |
| 69 | 39 |
| 70 TestNetAddressPrivate::TestNetAddressPrivate(TestingInstance* instance) | 40 TestNetAddressPrivate::TestNetAddressPrivate(TestingInstance* instance) |
| 71 : TestCase(instance) { | 41 : TestCase(instance) { |
| 72 } | 42 } |
| 73 | 43 |
| 74 bool TestNetAddressPrivate::Init() { | 44 bool TestNetAddressPrivate::Init() { |
| 75 return NetAddressPrivate::IsAvailable(); | 45 return NetAddressPrivate::IsAvailable(); |
| 76 } | 46 } |
| 77 | 47 |
| 78 void TestNetAddressPrivate::RunTests(const std::string& filter) { | 48 void TestNetAddressPrivate::RunTests(const std::string& filter) { |
| 79 RUN_TEST(AreEqual, filter); | 49 RUN_TEST(AreEqual, filter); |
| 80 RUN_TEST(AreHostsEqual, filter); | 50 RUN_TEST(AreHostsEqual, filter); |
| 81 RUN_TEST(Describe, filter); | 51 RUN_TEST(Describe, filter); |
| 82 RUN_TEST(ReplacePort, filter); | 52 RUN_TEST(ReplacePort, filter); |
| 83 RUN_TEST(GetAnyAddress, filter); | 53 RUN_TEST(GetAnyAddress, filter); |
| 84 RUN_TEST(DescribeIPv6, filter); | 54 RUN_TEST(DescribeIPv6, filter); |
| 85 RUN_TEST(GetFamily, filter); | 55 RUN_TEST(GetFamily, filter); |
| 86 RUN_TEST(GetPort, filter); | 56 RUN_TEST(GetPort, filter); |
| 87 RUN_TEST(GetAddress, filter); | 57 RUN_TEST(GetAddress, filter); |
| 58 RUN_TEST(GetScopeID, filter); |
| 88 } | 59 } |
| 89 | 60 |
| 90 std::string TestNetAddressPrivate::TestAreEqual() { | 61 std::string TestNetAddressPrivate::TestAreEqual() { |
| 91 // No comparisons should ever be done with invalid addresses. | 62 // No comparisons should ever be done with invalid addresses. |
| 92 PP_NetAddress_Private invalid = PP_NetAddress_Private(); | 63 PP_NetAddress_Private invalid = PP_NetAddress_Private(); |
| 93 ASSERT_FALSE(NetAddressPrivate::AreEqual(invalid, invalid)); | 64 ASSERT_FALSE(NetAddressPrivate::AreEqual(invalid, invalid)); |
| 94 | 65 |
| 95 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress("127.0.0.1", 80); | 66 uint8_t localhost_ip[4] = { 127, 0, 0, 1 }; |
| 67 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress(localhost_ip, 80); |
| 96 ASSERT_TRUE(NetAddressPrivate::AreEqual(localhost_80, localhost_80)); | 68 ASSERT_TRUE(NetAddressPrivate::AreEqual(localhost_80, localhost_80)); |
| 97 ASSERT_FALSE(NetAddressPrivate::AreEqual(localhost_80, invalid)); | 69 ASSERT_FALSE(NetAddressPrivate::AreEqual(localhost_80, invalid)); |
| 98 | 70 |
| 99 PP_NetAddress_Private localhost_1234 = MakeIPv4NetAddress("127.0.0.1", 1234); | 71 PP_NetAddress_Private localhost_1234 = MakeIPv4NetAddress(localhost_ip, 1234); |
| 100 ASSERT_FALSE(NetAddressPrivate::AreEqual(localhost_80, localhost_1234)); | 72 ASSERT_FALSE(NetAddressPrivate::AreEqual(localhost_80, localhost_1234)); |
| 101 | 73 |
| 102 PP_NetAddress_Private other_80 = MakeIPv4NetAddress("192.168.0.1", 80); | 74 uint8_t other_ip[4] = { 192, 168, 0, 1 }; |
| 75 PP_NetAddress_Private other_80 = MakeIPv4NetAddress(other_ip, 80); |
| 103 ASSERT_FALSE(NetAddressPrivate::AreEqual(localhost_80, other_80)); | 76 ASSERT_FALSE(NetAddressPrivate::AreEqual(localhost_80, other_80)); |
| 104 | 77 |
| 105 PASS(); | 78 PASS(); |
| 106 } | 79 } |
| 107 | 80 |
| 108 std::string TestNetAddressPrivate::TestAreHostsEqual() { | 81 std::string TestNetAddressPrivate::TestAreHostsEqual() { |
| 109 // No comparisons should ever be done with invalid addresses. | 82 // No comparisons should ever be done with invalid addresses. |
| 110 PP_NetAddress_Private invalid = PP_NetAddress_Private(); | 83 PP_NetAddress_Private invalid = PP_NetAddress_Private(); |
| 111 ASSERT_FALSE(NetAddressPrivate::AreHostsEqual(invalid, invalid)); | 84 ASSERT_FALSE(NetAddressPrivate::AreHostsEqual(invalid, invalid)); |
| 112 | 85 |
| 113 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress("127.0.0.1", 80); | 86 uint8_t localhost_ip[4] = { 127, 0, 0, 1 }; |
| 87 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress(localhost_ip, 80); |
| 114 ASSERT_TRUE(NetAddressPrivate::AreHostsEqual(localhost_80, localhost_80)); | 88 ASSERT_TRUE(NetAddressPrivate::AreHostsEqual(localhost_80, localhost_80)); |
| 115 ASSERT_FALSE(NetAddressPrivate::AreHostsEqual(localhost_80, invalid)); | 89 ASSERT_FALSE(NetAddressPrivate::AreHostsEqual(localhost_80, invalid)); |
| 116 | 90 |
| 117 PP_NetAddress_Private localhost_1234 = MakeIPv4NetAddress("127.0.0.1", 1234); | 91 PP_NetAddress_Private localhost_1234 = MakeIPv4NetAddress(localhost_ip, 1234); |
| 118 ASSERT_TRUE(NetAddressPrivate::AreHostsEqual(localhost_80, localhost_1234)); | 92 ASSERT_TRUE(NetAddressPrivate::AreHostsEqual(localhost_80, localhost_1234)); |
| 119 | 93 |
| 120 PP_NetAddress_Private other_80 = MakeIPv4NetAddress("192.168.0.1", 80); | 94 uint8_t other_ip[4] = { 192, 168, 0, 1 }; |
| 95 PP_NetAddress_Private other_80 = MakeIPv4NetAddress(other_ip, 80); |
| 121 ASSERT_FALSE(NetAddressPrivate::AreHostsEqual(localhost_80, other_80)); | 96 ASSERT_FALSE(NetAddressPrivate::AreHostsEqual(localhost_80, other_80)); |
| 122 | 97 |
| 123 PASS(); | 98 PASS(); |
| 124 } | 99 } |
| 125 | 100 |
| 126 std::string TestNetAddressPrivate::TestDescribe() { | 101 std::string TestNetAddressPrivate::TestDescribe() { |
| 127 PP_NetAddress_Private invalid = PP_NetAddress_Private(); | 102 PP_NetAddress_Private invalid = PP_NetAddress_Private(); |
| 128 ASSERT_EQ("", NetAddressPrivate::Describe(invalid, false)); | 103 ASSERT_EQ("", NetAddressPrivate::Describe(invalid, false)); |
| 129 ASSERT_EQ("", NetAddressPrivate::Describe(invalid, true)); | 104 ASSERT_EQ("", NetAddressPrivate::Describe(invalid, true)); |
| 130 | 105 |
| 131 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress("127.0.0.1", 80); | 106 uint8_t localhost_ip[4] = { 127, 0, 0, 1 }; |
| 107 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress(localhost_ip, 80); |
| 132 ASSERT_EQ("127.0.0.1", NetAddressPrivate::Describe(localhost_80, false)); | 108 ASSERT_EQ("127.0.0.1", NetAddressPrivate::Describe(localhost_80, false)); |
| 133 ASSERT_EQ("127.0.0.1:80", NetAddressPrivate::Describe(localhost_80, true)); | 109 ASSERT_EQ("127.0.0.1:80", NetAddressPrivate::Describe(localhost_80, true)); |
| 134 | 110 |
| 135 PP_NetAddress_Private localhost_1234 = MakeIPv4NetAddress("127.0.0.1", 1234); | 111 PP_NetAddress_Private localhost_1234 = MakeIPv4NetAddress(localhost_ip, 1234); |
| 136 ASSERT_EQ("127.0.0.1", NetAddressPrivate::Describe(localhost_1234, false)); | 112 ASSERT_EQ("127.0.0.1", NetAddressPrivate::Describe(localhost_1234, false)); |
| 137 ASSERT_EQ("127.0.0.1:1234", NetAddressPrivate::Describe(localhost_1234, | 113 ASSERT_EQ("127.0.0.1:1234", NetAddressPrivate::Describe(localhost_1234, |
| 138 true)); | 114 true)); |
| 139 | 115 |
| 140 PP_NetAddress_Private other_80 = MakeIPv4NetAddress("192.168.0.1", 80); | 116 uint8_t other_ip[4] = { 192, 168, 0, 1 }; |
| 117 PP_NetAddress_Private other_80 = MakeIPv4NetAddress(other_ip, 80); |
| 141 ASSERT_EQ("192.168.0.1", NetAddressPrivate::Describe(other_80, false)); | 118 ASSERT_EQ("192.168.0.1", NetAddressPrivate::Describe(other_80, false)); |
| 142 ASSERT_EQ("192.168.0.1:80", NetAddressPrivate::Describe(other_80, true)); | 119 ASSERT_EQ("192.168.0.1:80", NetAddressPrivate::Describe(other_80, true)); |
| 143 | 120 |
| 144 PASS(); | 121 PASS(); |
| 145 } | 122 } |
| 146 | 123 |
| 147 std::string TestNetAddressPrivate::TestReplacePort() { | 124 std::string TestNetAddressPrivate::TestReplacePort() { |
| 148 // Assume that |AreEqual()| works correctly. | 125 // Assume that |AreEqual()| works correctly. |
| 149 PP_NetAddress_Private result = PP_NetAddress_Private(); | 126 PP_NetAddress_Private result = PP_NetAddress_Private(); |
| 150 | 127 |
| 151 PP_NetAddress_Private invalid = PP_NetAddress_Private(); | 128 PP_NetAddress_Private invalid = PP_NetAddress_Private(); |
| 152 ASSERT_FALSE(NetAddressPrivate::ReplacePort(invalid, 1234, &result)); | 129 ASSERT_FALSE(NetAddressPrivate::ReplacePort(invalid, 1234, &result)); |
| 153 | 130 |
| 154 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress("127.0.0.1", 80); | 131 uint8_t localhost_ip[4] = { 127, 0, 0, 1 }; |
| 132 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress(localhost_ip, 80); |
| 155 ASSERT_TRUE(NetAddressPrivate::ReplacePort(localhost_80, 1234, &result)); | 133 ASSERT_TRUE(NetAddressPrivate::ReplacePort(localhost_80, 1234, &result)); |
| 156 PP_NetAddress_Private localhost_1234 = MakeIPv4NetAddress("127.0.0.1", 1234); | 134 PP_NetAddress_Private localhost_1234 = MakeIPv4NetAddress(localhost_ip, 1234); |
| 157 ASSERT_TRUE(NetAddressPrivate::AreEqual(result, localhost_1234)); | 135 ASSERT_TRUE(NetAddressPrivate::AreEqual(result, localhost_1234)); |
| 158 | 136 |
| 159 // Test that having the out param being the same as the in param works | 137 // Test that having the out param being the same as the in param works |
| 160 // properly. | 138 // properly. |
| 161 ASSERT_TRUE(NetAddressPrivate::ReplacePort(result, 80, &result)); | 139 ASSERT_TRUE(NetAddressPrivate::ReplacePort(result, 80, &result)); |
| 162 ASSERT_TRUE(NetAddressPrivate::AreEqual(result, localhost_80)); | 140 ASSERT_TRUE(NetAddressPrivate::AreEqual(result, localhost_80)); |
| 163 | 141 |
| 164 PASS(); | 142 PASS(); |
| 165 } | 143 } |
| 166 | 144 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 ASSERT_EQ(test_cases[i].expected_without_port, | 222 ASSERT_EQ(test_cases[i].expected_without_port, |
| 245 NetAddressPrivate::Describe(addr, false)); | 223 NetAddressPrivate::Describe(addr, false)); |
| 246 ASSERT_EQ(test_cases[i].expected_with_port, | 224 ASSERT_EQ(test_cases[i].expected_with_port, |
| 247 NetAddressPrivate::Describe(addr, true)); | 225 NetAddressPrivate::Describe(addr, true)); |
| 248 } | 226 } |
| 249 | 227 |
| 250 PASS(); | 228 PASS(); |
| 251 } | 229 } |
| 252 | 230 |
| 253 std::string TestNetAddressPrivate::TestGetFamily() { | 231 std::string TestNetAddressPrivate::TestGetFamily() { |
| 254 PP_NetAddress_Private ipv4 = MakeIPv4NetAddress("127.0.0.1", 80); | 232 uint8_t localhost_ip[4] = { 127, 0, 0, 1 }; |
| 233 PP_NetAddress_Private ipv4 = MakeIPv4NetAddress(localhost_ip, 80); |
| 255 ASSERT_EQ(NetAddressPrivate::GetFamily(ipv4), PP_NETADDRESSFAMILY_IPV4); | 234 ASSERT_EQ(NetAddressPrivate::GetFamily(ipv4), PP_NETADDRESSFAMILY_IPV4); |
| 256 | 235 |
| 257 uint16_t ipv6_address[8] = { 0x1234, 0xabcd, 0, 0, 0xff, 0, 0, 0xcdef }; | 236 uint16_t ipv6_address[8] = { 0x1234, 0xabcd, 0, 0, 0xff, 0, 0, 0xcdef }; |
| 258 PP_NetAddress_Private ipv6 = MakeIPv6NetAddress(ipv6_address, | 237 PP_NetAddress_Private ipv6 = MakeIPv6NetAddress(ipv6_address, 123, 0); |
| 259 123, | |
| 260 0); | |
| 261 ASSERT_EQ(NetAddressPrivate::GetFamily(ipv6), PP_NETADDRESSFAMILY_IPV6); | 238 ASSERT_EQ(NetAddressPrivate::GetFamily(ipv6), PP_NETADDRESSFAMILY_IPV6); |
| 262 | 239 |
| 263 PASS(); | 240 PASS(); |
| 264 } | 241 } |
| 265 | 242 |
| 266 std::string TestNetAddressPrivate::TestGetPort() { | 243 std::string TestNetAddressPrivate::TestGetPort() { |
| 267 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress("127.0.0.1", 80); | 244 uint8_t localhost_ip[4] = { 127, 0, 0, 1 }; |
| 245 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress(localhost_ip, 80); |
| 268 ASSERT_EQ(NetAddressPrivate::GetPort(localhost_80), 80); | 246 ASSERT_EQ(NetAddressPrivate::GetPort(localhost_80), 80); |
| 269 | 247 |
| 270 uint16_t ipv6_address[8] = { 0x1234, 0xabcd, 0, 0, 0xff, 0, 0, 0xcdef }; | 248 uint16_t ipv6_address[8] = { 0x1234, 0xabcd, 0, 0, 0xff, 0, 0, 0xcdef }; |
| 271 | 249 |
| 272 PP_NetAddress_Private port_123 = MakeIPv6NetAddress(ipv6_address, 123, 0); | 250 PP_NetAddress_Private port_123 = MakeIPv6NetAddress(ipv6_address, 123, 0); |
| 273 ASSERT_EQ(NetAddressPrivate::GetPort(port_123), 123); | 251 ASSERT_EQ(NetAddressPrivate::GetPort(port_123), 123); |
| 274 | 252 |
| 275 PP_NetAddress_Private port_FFFF = MakeIPv6NetAddress(ipv6_address, | 253 PP_NetAddress_Private port_FFFF = MakeIPv6NetAddress(ipv6_address, |
| 276 0xFFFF, | 254 0xFFFF, |
| 277 0); | 255 0); |
| 278 ASSERT_EQ(NetAddressPrivate::GetPort(port_FFFF), 0xFFFF); | 256 ASSERT_EQ(NetAddressPrivate::GetPort(port_FFFF), 0xFFFF); |
| 279 | 257 |
| 280 PASS(); | 258 PASS(); |
| 281 } | 259 } |
| 282 | 260 |
| 283 std::string TestNetAddressPrivate::TestGetAddress() { | 261 std::string TestNetAddressPrivate::TestGetAddress() { |
| 284 const int addr_storage_len = 16; | 262 const int addr_storage_len = 16; |
| 285 unsigned char addr_storage[addr_storage_len]; | 263 unsigned char addr_storage[addr_storage_len]; |
| 286 | 264 |
| 287 const char* ipv4_addr = "127.0.0.1"; | 265 const uint8_t ipv4_addr[4] = { 127, 0, 0, 1 }; |
| 288 uint32_t ipv4_addr_long = inet_addr(ipv4_addr); | |
| 289 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress(ipv4_addr, 80); | 266 PP_NetAddress_Private localhost_80 = MakeIPv4NetAddress(ipv4_addr, 80); |
| 290 memset(addr_storage, 0, addr_storage_len); | 267 memset(addr_storage, 0, addr_storage_len); |
| 291 ASSERT_TRUE(NetAddressPrivate::GetAddress(localhost_80, | 268 ASSERT_TRUE(NetAddressPrivate::GetAddress(localhost_80, |
| 292 addr_storage, | 269 addr_storage, |
| 293 addr_storage_len)); | 270 addr_storage_len)); |
| 294 ASSERT_EQ(memcmp(addr_storage, &ipv4_addr_long, 4), 0); | 271 ASSERT_EQ(memcmp(addr_storage, &ipv4_addr, 4), 0); |
| 295 | 272 |
| 296 // Insufficient storage for address. | 273 // Insufficient storage for address. |
| 297 ASSERT_FALSE(NetAddressPrivate::GetAddress(localhost_80, | 274 ASSERT_FALSE(NetAddressPrivate::GetAddress(localhost_80, |
| 298 addr_storage, | 275 addr_storage, |
| 299 1)); | 276 1)); |
| 300 | 277 |
| 301 uint16_t ipv6_address[8] = { 0x1234, 0xabcd, 0, 0, 0xff, 0, 0, 0xcdef }; | 278 uint16_t ipv6_address[8] = { 0x1234, 0xabcd, 0, 0, 0xff, 0, 0, 0xcdef }; |
| 302 PP_NetAddress_Private ipv6_addr = MakeIPv6NetAddress(ipv6_address, | 279 PP_NetAddress_Private ipv6_addr = MakeIPv6NetAddress(ipv6_address, |
| 303 123, | 280 123, |
| 304 0); | 281 0); |
| 305 | 282 |
| 306 // Ensure the ipv6 address is transformed properly into network order. | 283 // Ensure the ipv6 address is transformed properly into network order. |
| 307 for (int i = 0; i < 8; i++) | 284 uint8_t ipv6_bytes[16]; |
| 308 ipv6_address[i] = htons(ipv6_address[i]); | 285 for(int i = 0; i < 8; ++i) { |
| 286 ipv6_bytes[i * 2] = ipv6_address[i] >> 8; |
| 287 ipv6_bytes[i * 2 + 1] = ipv6_address[i] & 0xFF; |
| 288 } |
| 309 | 289 |
| 310 memset(addr_storage, 0, addr_storage_len); | 290 memset(addr_storage, 0, addr_storage_len); |
| 311 ASSERT_TRUE(NetAddressPrivate::GetAddress(ipv6_addr, | 291 ASSERT_TRUE(NetAddressPrivate::GetAddress(ipv6_addr, |
| 312 addr_storage, | 292 addr_storage, |
| 313 addr_storage_len)); | 293 addr_storage_len)); |
| 314 ASSERT_EQ(memcmp(addr_storage, ipv6_address, 16), 0); | 294 ASSERT_EQ(memcmp(addr_storage, ipv6_bytes, 16), 0); |
| 315 | 295 |
| 316 // Insufficient storage for address. | 296 // Insufficient storage for address. |
| 317 ASSERT_FALSE(NetAddressPrivate::GetAddress(ipv6_addr, | 297 ASSERT_FALSE(NetAddressPrivate::GetAddress(ipv6_addr, |
| 318 addr_storage, | 298 addr_storage, |
| 319 1)); | 299 1)); |
| 320 | 300 |
| 321 PASS(); | 301 PASS(); |
| 322 } | 302 } |
| 303 |
| 304 std::string TestNetAddressPrivate::TestGetScopeID() { |
| 305 uint8_t localhost_ip[4] = { 127, 0, 0, 1 }; |
| 306 PP_NetAddress_Private ipv4 = MakeIPv4NetAddress(localhost_ip, 80); |
| 307 ASSERT_EQ(NetAddressPrivate::GetScopeID(ipv4), 0); |
| 308 |
| 309 uint16_t ipv6_address[8] = { 0x1234, 0xabcd, 0, 0, 0xff, 0, 0, 0xcdef }; |
| 310 |
| 311 PP_NetAddress_Private ipv6_123 = MakeIPv6NetAddress(ipv6_address, 0, 123); |
| 312 ASSERT_EQ(NetAddressPrivate::GetScopeID(ipv6_123), 123); |
| 313 |
| 314 PP_NetAddress_Private ipv6_max = |
| 315 MakeIPv6NetAddress(ipv6_address, 0, 0xFFFFFFFF); |
| 316 ASSERT_EQ(NetAddressPrivate::GetScopeID(ipv6_max), 0xFFFFFFFF); |
| 317 |
| 318 PASS(); |
| 319 } |
| OLD | NEW |