Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1057)

Side by Side Diff: net/base/ip_address_unittest.cc

Issue 1676023002: Make IPAddress::FromIPLiteral a member function. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/base/ip_address.cc ('k') | net/base/ip_endpoint_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"
11 11
12 namespace net { 12 namespace net {
13 13
14 namespace { 14 namespace {
15 15
16 // Helper to stringize an IP number (used to define expectations). 16 // Helper to stringize an IP address (used to define expectations).
17 std::string DumpIPAddress(const IPAddress& v) { 17 std::string DumpIPAddress(const IPAddress& v) {
18 std::string out; 18 std::string out;
19 for (size_t i = 0; i < v.bytes().size(); ++i) { 19 for (size_t i = 0; i < v.bytes().size(); ++i) {
20 if (i != 0) 20 if (i != 0)
21 out.append(","); 21 out.append(",");
22 out.append(base::UintToString(v.bytes()[i])); 22 out.append(base::UintToString(v.bytes()[i]));
23 } 23 }
24 return out; 24 return out;
25 } 25 }
26 26
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 uint8_t addr2[4] = {192, 168, 0, 1}; 90 uint8_t addr2[4] = {192, 168, 0, 1};
91 IPAddress ip_address2(addr2); 91 IPAddress ip_address2(addr2);
92 EXPECT_EQ("192.168.0.1", ip_address2.ToString()); 92 EXPECT_EQ("192.168.0.1", ip_address2.ToString());
93 93
94 uint8_t addr3[16] = {0xFE, 0xDC, 0xBA, 0x98}; 94 uint8_t addr3[16] = {0xFE, 0xDC, 0xBA, 0x98};
95 IPAddress ip_address3(addr3); 95 IPAddress ip_address3(addr3);
96 EXPECT_EQ("fedc:ba98::", ip_address3.ToString()); 96 EXPECT_EQ("fedc:ba98::", ip_address3.ToString());
97 } 97 }
98 98
99 // Test that invalid IP literals fail to parse. 99 // Test that invalid IP literals fail to parse.
100 TEST(IPAddressTest, FromIPLiteral_FailParse) { 100 TEST(IPAddressTest, AssignFromIPLiteral_FailParse) {
101 IPAddress address; 101 IPAddress address;
102 102
103 EXPECT_FALSE(IPAddress::FromIPLiteral("bad value", &address)); 103 EXPECT_FALSE(address.AssignFromIPLiteral("bad value"));
104 EXPECT_FALSE(IPAddress::FromIPLiteral("bad:value", &address)); 104 EXPECT_FALSE(address.AssignFromIPLiteral("bad:value"));
105 EXPECT_FALSE(IPAddress::FromIPLiteral(std::string(), &address)); 105 EXPECT_FALSE(address.AssignFromIPLiteral(std::string()));
106 EXPECT_FALSE(IPAddress::FromIPLiteral("192.168.0.1:30", &address)); 106 EXPECT_FALSE(address.AssignFromIPLiteral("192.168.0.1:30"));
107 EXPECT_FALSE(IPAddress::FromIPLiteral(" 192.168.0.1 ", &address)); 107 EXPECT_FALSE(address.AssignFromIPLiteral(" 192.168.0.1 "));
108 EXPECT_FALSE(IPAddress::FromIPLiteral("[::1]", &address)); 108 EXPECT_FALSE(address.AssignFromIPLiteral("[::1]"));
109 } 109 }
110 110
111 // Test parsing an IPv4 literal. 111 // Test parsing an IPv4 literal.
112 TEST(IPAddressTest, FromIPLiteral_IPv4) { 112 TEST(IPAddressTest, AssignFromIPLiteral_IPv4) {
113 IPAddress address; 113 IPAddress address;
114 EXPECT_TRUE(IPAddress::FromIPLiteral("192.168.0.1", &address)); 114 EXPECT_TRUE(address.AssignFromIPLiteral("192.168.0.1"));
115 EXPECT_EQ("192,168,0,1", DumpIPAddress(address)); 115 EXPECT_EQ("192,168,0,1", DumpIPAddress(address));
116 EXPECT_EQ("192.168.0.1", address.ToString()); 116 EXPECT_EQ("192.168.0.1", address.ToString());
117 } 117 }
118 118
119 // Test parsing an IPv6 literal. 119 // Test parsing an IPv6 literal.
120 TEST(IPAddressTest, FromIPLiteral_IPv6) { 120 TEST(IPAddressTest, AssignFromIPLiteral_IPv6) {
121 IPAddress address; 121 IPAddress address;
122 EXPECT_TRUE(IPAddress::FromIPLiteral("1:abcd::3:4:ff", &address)); 122 EXPECT_TRUE(address.AssignFromIPLiteral("1:abcd::3:4:ff"));
123 EXPECT_EQ("0,1,171,205,0,0,0,0,0,0,0,3,0,4,0,255", DumpIPAddress(address)); 123 EXPECT_EQ("0,1,171,205,0,0,0,0,0,0,0,3,0,4,0,255", DumpIPAddress(address));
124 EXPECT_EQ("1:abcd::3:4:ff", address.ToString()); 124 EXPECT_EQ("1:abcd::3:4:ff", address.ToString());
125 } 125 }
126 126
127 TEST(IPAddressTest, IsIPv4MappedIPv6) { 127 TEST(IPAddressTest, IsIPv4MappedIPv6) {
128 IPAddress ipv4_address; 128 IPAddress ipv4_address;
129 EXPECT_TRUE(IPAddress::FromIPLiteral("192.168.0.1", &ipv4_address)); 129 EXPECT_TRUE(ipv4_address.AssignFromIPLiteral("192.168.0.1"));
130 EXPECT_FALSE(ipv4_address.IsIPv4MappedIPv6()); 130 EXPECT_FALSE(ipv4_address.IsIPv4MappedIPv6());
131 131
132 IPAddress ipv6_address; 132 IPAddress ipv6_address;
133 EXPECT_TRUE(IPAddress::FromIPLiteral("::1", &ipv4_address)); 133 EXPECT_TRUE(ipv6_address.AssignFromIPLiteral("::1"));
martijnc 2016/02/07 20:18:54 I think this one was wrong before.
eroman 2016/02/08 20:38:23 Indeed, good catch!
134 EXPECT_FALSE(ipv6_address.IsIPv4MappedIPv6()); 134 EXPECT_FALSE(ipv6_address.IsIPv4MappedIPv6());
135 135
136 IPAddress ipv4mapped_address; 136 IPAddress ipv4mapped_address;
137 EXPECT_TRUE(IPAddress::FromIPLiteral("::ffff:0101:1", &ipv4mapped_address)); 137 EXPECT_TRUE(ipv4mapped_address.AssignFromIPLiteral("::ffff:0101:1"));
138 EXPECT_TRUE(ipv4mapped_address.IsIPv4MappedIPv6()); 138 EXPECT_TRUE(ipv4mapped_address.IsIPv4MappedIPv6());
139 } 139 }
140 140
141 TEST(IPAddressTest, IsEqual) { 141 TEST(IPAddressTest, IsEqual) {
142 IPAddress ip_address1; 142 IPAddress ip_address1;
143 EXPECT_TRUE(IPAddress::FromIPLiteral("127.0.0.1", &ip_address1)); 143 EXPECT_TRUE(ip_address1.AssignFromIPLiteral("127.0.0.1"));
144 IPAddress ip_address2; 144 IPAddress ip_address2;
145 EXPECT_TRUE(IPAddress::FromIPLiteral("2001:db8:0::42", &ip_address2)); 145 EXPECT_TRUE(ip_address2.AssignFromIPLiteral("2001:db8:0::42"));
146 IPAddress ip_address3; 146 IPAddress ip_address3;
147 EXPECT_TRUE(IPAddress::FromIPLiteral("127.0.0.1", &ip_address3)); 147 EXPECT_TRUE(ip_address3.AssignFromIPLiteral("127.0.0.1"));
148 148
149 EXPECT_FALSE(ip_address1 == ip_address2); 149 EXPECT_FALSE(ip_address1 == ip_address2);
150 EXPECT_TRUE(ip_address1 == ip_address3); 150 EXPECT_TRUE(ip_address1 == ip_address3);
151 } 151 }
152 152
153 TEST(IPAddressTest, LessThan) { 153 TEST(IPAddressTest, LessThan) {
154 // IPv4 vs IPv6 154 // IPv4 vs IPv6
155 IPAddress ip_address1; 155 IPAddress ip_address1;
156 EXPECT_TRUE(IPAddress::FromIPLiteral("127.0.0.1", &ip_address1)); 156 EXPECT_TRUE(ip_address1.AssignFromIPLiteral("127.0.0.1"));
157 IPAddress ip_address2; 157 IPAddress ip_address2;
158 EXPECT_TRUE(IPAddress::FromIPLiteral("2001:db8:0::42", &ip_address2)); 158 EXPECT_TRUE(ip_address2.AssignFromIPLiteral("2001:db8:0::42"));
159 EXPECT_TRUE(ip_address1 < ip_address2); 159 EXPECT_TRUE(ip_address1 < ip_address2);
160 EXPECT_FALSE(ip_address2 < ip_address1); 160 EXPECT_FALSE(ip_address2 < ip_address1);
161 161
162 // Compare equivalent addresses. 162 // Compare equivalent addresses.
163 IPAddress ip_address3; 163 IPAddress ip_address3;
164 EXPECT_TRUE(IPAddress::FromIPLiteral("127.0.0.1", &ip_address3)); 164 EXPECT_TRUE(ip_address3.AssignFromIPLiteral("127.0.0.1"));
165 EXPECT_FALSE(ip_address1 < ip_address3); 165 EXPECT_FALSE(ip_address1 < ip_address3);
166 EXPECT_FALSE(ip_address3 < ip_address1); 166 EXPECT_FALSE(ip_address3 < ip_address1);
167 } 167 }
168 168
169 TEST(IPAddressTest, IPAddressToStringWithPort) { 169 TEST(IPAddressTest, IPAddressToStringWithPort) {
170 IPAddress address1; 170 IPAddress address1;
171 EXPECT_TRUE(IPAddress::FromIPLiteral("0.0.0.0", &address1)); 171 EXPECT_TRUE(address1.AssignFromIPLiteral("0.0.0.0"));
172 EXPECT_EQ("0.0.0.0:3", IPAddressToStringWithPort(address1, 3)); 172 EXPECT_EQ("0.0.0.0:3", IPAddressToStringWithPort(address1, 3));
173 173
174 IPAddress address2; 174 IPAddress address2;
175 EXPECT_TRUE(IPAddress::FromIPLiteral("192.168.0.1", &address2)); 175 EXPECT_TRUE(address2.AssignFromIPLiteral("192.168.0.1"));
176 EXPECT_EQ("192.168.0.1:99", IPAddressToStringWithPort(address2, 99)); 176 EXPECT_EQ("192.168.0.1:99", IPAddressToStringWithPort(address2, 99));
177 177
178 IPAddress address3; 178 IPAddress address3;
179 EXPECT_TRUE(IPAddress::FromIPLiteral("fedc:ba98::", &address3)); 179 EXPECT_TRUE(address3.AssignFromIPLiteral("fedc:ba98::"));
180 EXPECT_EQ("[fedc:ba98::]:8080", IPAddressToStringWithPort(address3, 8080)); 180 EXPECT_EQ("[fedc:ba98::]:8080", IPAddressToStringWithPort(address3, 8080));
181 } 181 }
182 182
183 TEST(IPAddressTest, IPAddressToPackedString) { 183 TEST(IPAddressTest, IPAddressToPackedString) {
184 IPAddress ipv4_address; 184 IPAddress ipv4_address;
185 EXPECT_TRUE(IPAddress::FromIPLiteral("4.31.198.44", &ipv4_address)); 185 EXPECT_TRUE(ipv4_address.AssignFromIPLiteral("4.31.198.44"));
186 std::string expected_ipv4_address("\x04\x1f\xc6\x2c", 4); 186 std::string expected_ipv4_address("\x04\x1f\xc6\x2c", 4);
187 EXPECT_EQ(expected_ipv4_address, IPAddressToPackedString(ipv4_address)); 187 EXPECT_EQ(expected_ipv4_address, IPAddressToPackedString(ipv4_address));
188 188
189 IPAddress ipv6_address; 189 IPAddress ipv6_address;
190 EXPECT_TRUE( 190 EXPECT_TRUE(ipv6_address.AssignFromIPLiteral("2001:0700:0300:1800::000f"));
191 IPAddress::FromIPLiteral("2001:0700:0300:1800::000f", &ipv6_address));
192 std::string expected_ipv6_address( 191 std::string expected_ipv6_address(
193 "\x20\x01\x07\x00\x03\x00\x18\x00" 192 "\x20\x01\x07\x00\x03\x00\x18\x00"
194 "\x00\x00\x00\x00\x00\x00\x00\x0f", 193 "\x00\x00\x00\x00\x00\x00\x00\x0f",
195 16); 194 16);
196 EXPECT_EQ(expected_ipv6_address, IPAddressToPackedString(ipv6_address)); 195 EXPECT_EQ(expected_ipv6_address, IPAddressToPackedString(ipv6_address));
197 } 196 }
198 197
199 TEST(IPAddressTest, ConvertIPv4ToIPv4MappedIPv6) { 198 TEST(IPAddressTest, ConvertIPv4ToIPv4MappedIPv6) {
200 IPAddress ipv4_number; 199 IPAddress ipv4_address;
201 EXPECT_TRUE(IPAddress::FromIPLiteral("192.168.0.1", &ipv4_number)); 200 EXPECT_TRUE(ipv4_address.AssignFromIPLiteral("192.168.0.1"));
202 201
203 IPAddress ipv6_number = ConvertIPv4ToIPv4MappedIPv6(ipv4_number); 202 IPAddress ipv6_address = ConvertIPv4ToIPv4MappedIPv6(ipv4_address);
204 203
205 // ::ffff:192.168.0.1 204 // ::ffff:192.168.0.1
206 EXPECT_EQ("::ffff:c0a8:1", ipv6_number.ToString()); 205 EXPECT_EQ("::ffff:c0a8:1", ipv6_address.ToString());
207 } 206 }
208 207
209 TEST(IPAddressTest, ConvertIPv4MappedIPv6ToIPv4) { 208 TEST(IPAddressTest, ConvertIPv4MappedIPv6ToIPv4) {
210 IPAddress ipv4mapped_number; 209 IPAddress ipv4mapped_address;
211 EXPECT_TRUE(IPAddress::FromIPLiteral("::ffff:c0a8:1", &ipv4mapped_number)); 210 EXPECT_TRUE(ipv4mapped_address.AssignFromIPLiteral("::ffff:c0a8:1"));
212 211
213 IPAddress expected; 212 IPAddress expected;
214 EXPECT_TRUE(IPAddress::FromIPLiteral("192.168.0.1", &expected)); 213 EXPECT_TRUE(expected.AssignFromIPLiteral("192.168.0.1"));
215 214
216 IPAddress result = ConvertIPv4MappedIPv6ToIPv4(ipv4mapped_number); 215 IPAddress result = ConvertIPv4MappedIPv6ToIPv4(ipv4mapped_address);
217 EXPECT_EQ(expected, result); 216 EXPECT_EQ(expected, result);
218 } 217 }
219 218
220 } // anonymous namespace 219 } // anonymous namespace
221 220
222 } // namespace net 221 } // namespace net
OLDNEW
« no previous file with comments | « net/base/ip_address.cc ('k') | net/base/ip_endpoint_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698