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", | |
eroman
2016/03/18 23:52:16
I wonder if we currently allow :
192.168.1.1/+1
martijnc
2016/03/19 12:06:07
ParseCIDRBlock (incorrectly) parses this as valid.
| |
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) { | |
eroman
2016/03/18 23:52:17
If you like can change this to:
for (const auto&
martijnc
2016/03/19 12:06:07
Done.
| |
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 |