OLD | NEW |
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 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 "net/base/ip_address.h" | 5 #include "net/base/ip_address.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 IPAddress ipv4mapped_address; | 231 IPAddress ipv4mapped_address; |
232 EXPECT_TRUE(ipv4mapped_address.AssignFromIPLiteral("::ffff:c0a8:1")); | 232 EXPECT_TRUE(ipv4mapped_address.AssignFromIPLiteral("::ffff:c0a8:1")); |
233 | 233 |
234 IPAddress expected; | 234 IPAddress expected; |
235 EXPECT_TRUE(expected.AssignFromIPLiteral("192.168.0.1")); | 235 EXPECT_TRUE(expected.AssignFromIPLiteral("192.168.0.1")); |
236 | 236 |
237 IPAddress result = ConvertIPv4MappedIPv6ToIPv4(ipv4mapped_address); | 237 IPAddress result = ConvertIPv4MappedIPv6ToIPv4(ipv4mapped_address); |
238 EXPECT_EQ(expected, result); | 238 EXPECT_EQ(expected, result); |
239 } | 239 } |
240 | 240 |
| 241 // Test parsing invalid CIDR notation literals. |
| 242 TEST(IPAddressTest, ParseCIDRBlock_Invalid) { |
| 243 const char* const bad_literals[] = {"foobar", |
| 244 "", |
| 245 "192.168.0.1", |
| 246 "::1", |
| 247 "/", |
| 248 "/1", |
| 249 "1", |
| 250 "192.168.1.1/-1", |
| 251 "192.168.1.1/33", |
| 252 "::1/-3", |
| 253 "a::3/129", |
| 254 "::1/x", |
| 255 "192.168.0.1//11"}; |
| 256 |
| 257 for (size_t i = 0; i < arraysize(bad_literals); ++i) { |
| 258 IPAddress ip_address; |
| 259 size_t prefix_length_in_bits; |
| 260 |
| 261 EXPECT_FALSE( |
| 262 ParseCIDRBlock(bad_literals[i], ip_address, prefix_length_in_bits)); |
| 263 } |
| 264 } |
| 265 |
| 266 // Test parsing a valid CIDR notation literal. |
| 267 TEST(IPAddressTest, ParseCIDRBlock_Valid) { |
| 268 IPAddress ip_address; |
| 269 size_t prefix_length_in_bits; |
| 270 |
| 271 EXPECT_TRUE( |
| 272 ParseCIDRBlock("192.168.0.1/11", ip_address, prefix_length_in_bits)); |
| 273 |
| 274 EXPECT_EQ("192,168,0,1", DumpIPAddress(ip_address)); |
| 275 EXPECT_EQ(11u, prefix_length_in_bits); |
| 276 |
| 277 EXPECT_TRUE(ParseCIDRBlock("::ffff:192.168.0.1/112", ip_address, |
| 278 prefix_length_in_bits)); |
| 279 |
| 280 EXPECT_EQ("0,0,0,0,0,0,0,0,0,0,255,255,192,168,0,1", |
| 281 DumpIPAddress(ip_address)); |
| 282 EXPECT_EQ(112u, prefix_length_in_bits); |
| 283 } |
| 284 |
241 TEST(IPAddressTest, IPAddressStartsWith) { | 285 TEST(IPAddressTest, IPAddressStartsWith) { |
242 IPAddress ipv4_address(192, 168, 10, 5); | 286 IPAddress ipv4_address(192, 168, 10, 5); |
243 | 287 |
244 uint8_t ipv4_prefix1[] = {192, 168, 10}; | 288 uint8_t ipv4_prefix1[] = {192, 168, 10}; |
245 EXPECT_TRUE(IPAddressStartsWith(ipv4_address, ipv4_prefix1)); | 289 EXPECT_TRUE(IPAddressStartsWith(ipv4_address, ipv4_prefix1)); |
246 | 290 |
247 uint8_t ipv4_prefix3[] = {192, 168, 10, 5}; | 291 uint8_t ipv4_prefix3[] = {192, 168, 10, 5}; |
248 EXPECT_TRUE(IPAddressStartsWith(ipv4_address, ipv4_prefix3)); | 292 EXPECT_TRUE(IPAddressStartsWith(ipv4_address, ipv4_prefix3)); |
249 | 293 |
250 uint8_t ipv4_prefix2[] = {192, 168, 10, 10}; | 294 uint8_t ipv4_prefix2[] = {192, 168, 10, 10}; |
(...skipping 23 matching lines...) Expand all Loading... |
274 | 318 |
275 // Prefix is longer than the address. | 319 // Prefix is longer than the address. |
276 uint8_t ipv6_prefix5[] = {42, 0, 20, 80, 64, 12, 12, 9, 0, | 320 uint8_t ipv6_prefix5[] = {42, 0, 20, 80, 64, 12, 12, 9, 0, |
277 0, 0, 0, 0, 0, 0, 0, 10}; | 321 0, 0, 0, 0, 0, 0, 0, 10}; |
278 EXPECT_FALSE(IPAddressStartsWith(ipv6_address, ipv6_prefix5)); | 322 EXPECT_FALSE(IPAddressStartsWith(ipv6_address, ipv6_prefix5)); |
279 } | 323 } |
280 | 324 |
281 } // anonymous namespace | 325 } // anonymous namespace |
282 | 326 |
283 } // namespace net | 327 } // namespace net |
OLD | NEW |