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

Side by Side Diff: net/dns/dns_config_service_win_unittest.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
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 "net/dns/dns_config_service_win.h" 5 #include "net/dns/dns_config_service_win.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/win/windows_version.h" 9 #include "base/win/windows_version.h"
10 #include "net/dns/dns_protocol.h" 10 #include "net/dns/dns_protocol.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 namespace net { 13 namespace net {
14 14
15 namespace { 15 namespace {
16 16
17 TEST(DnsConfigServiceWinTest, ParseSearchList) { 17 TEST(DnsConfigServiceWinTest, ParseSearchList) {
18 const struct TestCase { 18 const struct TestCase {
19 const wchar_t* input; 19 const wchar_t* input;
20 const char* output[4]; // NULL-terminated, empty if expected false 20 const char* output[4]; // NULL-terminated, empty if expected false
21 } cases[] = { 21 } cases[] = {
22 { L"chromium.org", { "chromium.org", NULL } }, 22 {L"chromium.org", {"chromium.org", NULL}},
23 { L"chromium.org,org", { "chromium.org", "org", NULL } }, 23 {L"chromium.org,org", {"chromium.org", "org", NULL}},
24 // Empty suffixes terminate the list 24 // Empty suffixes terminate the list
25 { L"crbug.com,com,,org", { "crbug.com", "com", NULL } }, 25 {L"crbug.com,com,,org", {"crbug.com", "com", NULL}},
26 // IDN are converted to punycode 26 // IDN are converted to punycode
27 { L"\u017c\xf3\u0142ta.pi\u0119\u015b\u0107.pl,pl", 27 {L"\u017c\xf3\u0142ta.pi\u0119\u015b\u0107.pl,pl",
28 { "xn--ta-4ja03asj.xn--pi-wla5e0q.pl", "pl", NULL } }, 28 {"xn--ta-4ja03asj.xn--pi-wla5e0q.pl", "pl", NULL}},
29 // Empty search list is invalid 29 // Empty search list is invalid
30 { L"", { NULL } }, 30 {L"", {NULL}},
31 { L",,", { NULL } }, 31 {L",,", {NULL}},
32 }; 32 };
33 33
34 std::vector<std::string> actual_output, expected_output; 34 std::vector<std::string> actual_output, expected_output;
35 for (unsigned i = 0; i < arraysize(cases); ++i) { 35 for (unsigned i = 0; i < arraysize(cases); ++i) {
36 const TestCase& t = cases[i]; 36 const TestCase& t = cases[i];
37 actual_output.clear(); 37 actual_output.clear();
38 actual_output.push_back("UNSET"); 38 actual_output.push_back("UNSET");
39 expected_output.clear(); 39 expected_output.clear();
40 for (const char* const* output = t.output; *output; ++output) { 40 for (const char* const* output = t.output; *output; ++output) {
41 expected_output.push_back(*output); 41 expected_output.push_back(*output);
42 } 42 }
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 } 115 }
116 116
117 TEST(DnsConfigServiceWinTest, ConvertAdapterAddresses) { 117 TEST(DnsConfigServiceWinTest, ConvertAdapterAddresses) {
118 // Check nameservers and connection-specific suffix. 118 // Check nameservers and connection-specific suffix.
119 const struct TestCase { 119 const struct TestCase {
120 AdapterInfo input_adapters[4]; // |if_type| == 0 indicates end. 120 AdapterInfo input_adapters[4]; // |if_type| == 0 indicates end.
121 std::string expected_nameservers[4]; // Empty string indicates end. 121 std::string expected_nameservers[4]; // Empty string indicates end.
122 std::string expected_suffix; 122 std::string expected_suffix;
123 int expected_ports[4]; 123 int expected_ports[4];
124 } cases[] = { 124 } cases[] = {
125 { // Ignore loopback and inactive adapters. 125 {// Ignore loopback and inactive adapters.
126 { 126 {
127 { IF_TYPE_SOFTWARE_LOOPBACK, IfOperStatusUp, L"funnyloop", 127 {IF_TYPE_SOFTWARE_LOOPBACK,
128 { "2.0.0.2" } }, 128 IfOperStatusUp,
129 { IF_TYPE_FASTETHER, IfOperStatusDormant, L"example.com", 129 L"funnyloop",
130 { "1.0.0.1" } }, 130 {"2.0.0.2"}},
131 { IF_TYPE_USB, IfOperStatusUp, L"chromium.org", 131 {IF_TYPE_FASTETHER, IfOperStatusDormant, L"example.com", {"1.0.0.1"}},
132 { "10.0.0.10", "2001:FFFF::1111" } }, 132 {IF_TYPE_USB,
133 { 0 }, 133 IfOperStatusUp,
134 }, 134 L"chromium.org",
135 { "10.0.0.10", "2001:FFFF::1111" }, 135 {"10.0.0.10", "2001:FFFF::1111"}},
136 "chromium.org", 136 {0},
137 }, 137 },
138 { // Respect configured ports. 138 {"10.0.0.10", "2001:FFFF::1111"},
139 { 139 "chromium.org",
140 { IF_TYPE_USB, IfOperStatusUp, L"chromium.org", 140 },
141 { "10.0.0.10", "2001:FFFF::1111" }, { 1024, 24 } }, 141 {// Respect configured ports.
142 { 0 }, 142 {
143 }, 143 {IF_TYPE_USB,
144 { "10.0.0.10", "2001:FFFF::1111" }, 144 IfOperStatusUp,
145 "chromium.org", 145 L"chromium.org",
146 { 1024, 24 }, 146 {"10.0.0.10", "2001:FFFF::1111"},
147 }, 147 {1024, 24}},
148 { // Use the preferred adapter (first in binding order) and filter 148 {0},
149 // stateless DNS discovery addresses. 149 },
150 { 150 {"10.0.0.10", "2001:FFFF::1111"},
151 { IF_TYPE_SOFTWARE_LOOPBACK, IfOperStatusUp, L"funnyloop", 151 "chromium.org",
152 { "2.0.0.2" } }, 152 {1024, 24},
153 { IF_TYPE_FASTETHER, IfOperStatusUp, L"example.com", 153 },
154 { "1.0.0.1", "fec0:0:0:ffff::2", "8.8.8.8" } }, 154 {// Use the preferred adapter (first in binding order) and filter
155 { IF_TYPE_USB, IfOperStatusUp, L"chromium.org", 155 // stateless DNS discovery addresses.
156 { "10.0.0.10", "2001:FFFF::1111" } }, 156 {
157 { 0 }, 157 {IF_TYPE_SOFTWARE_LOOPBACK,
158 }, 158 IfOperStatusUp,
159 { "1.0.0.1", "8.8.8.8" }, 159 L"funnyloop",
160 "example.com", 160 {"2.0.0.2"}},
161 }, 161 {IF_TYPE_FASTETHER,
162 { // No usable adapters. 162 IfOperStatusUp,
163 { 163 L"example.com",
164 { IF_TYPE_SOFTWARE_LOOPBACK, IfOperStatusUp, L"localhost", 164 {"1.0.0.1", "fec0:0:0:ffff::2", "8.8.8.8"}},
165 { "2.0.0.2" } }, 165 {IF_TYPE_USB,
166 { IF_TYPE_FASTETHER, IfOperStatusDormant, L"example.com", 166 IfOperStatusUp,
167 { "1.0.0.1" } }, 167 L"chromium.org",
168 { IF_TYPE_USB, IfOperStatusUp, L"chromium.org" }, 168 {"10.0.0.10", "2001:FFFF::1111"}},
169 { 0 }, 169 {0},
170 }, 170 },
171 }, 171 {"1.0.0.1", "8.8.8.8"},
172 }; 172 "example.com",
173 },
174 {// No usable adapters.
175 {
176 {IF_TYPE_SOFTWARE_LOOPBACK,
177 IfOperStatusUp,
178 L"localhost",
179 {"2.0.0.2"}},
180 {IF_TYPE_FASTETHER, IfOperStatusDormant, L"example.com", {"1.0.0.1"}},
181 {IF_TYPE_USB, IfOperStatusUp, L"chromium.org"},
182 {0},
183 },
184 },
185 };
173 186
174 for (size_t i = 0; i < arraysize(cases); ++i) { 187 for (size_t i = 0; i < arraysize(cases); ++i) {
175 const TestCase& t = cases[i]; 188 const TestCase& t = cases[i];
176 internal::DnsSystemSettings settings = { 189 internal::DnsSystemSettings settings = {
177 CreateAdapterAddresses(t.input_adapters), 190 CreateAdapterAddresses(t.input_adapters),
178 // Default settings for the rest. 191 // Default settings for the rest.
179 }; 192 };
180 std::vector<IPEndPoint> expected_nameservers; 193 std::vector<IPEndPoint> expected_nameservers;
181 for (size_t j = 0; !t.expected_nameservers[j].empty(); ++j) { 194 for (size_t j = 0; !t.expected_nameservers[j].empty(); ++j) {
182 IPAddressNumber ip; 195 IPAddressNumber ip;
183 ASSERT_TRUE(ParseIPLiteralToNumber(t.expected_nameservers[j], &ip)); 196 ASSERT_TRUE(ParseIPLiteralToNumber(t.expected_nameservers[j], &ip));
184 int port = t.expected_ports[j]; 197 int port = t.expected_ports[j];
185 if (!port) 198 if (!port)
186 port = dns_protocol::kDefaultPort; 199 port = dns_protocol::kDefaultPort;
187 expected_nameservers.push_back(IPEndPoint(ip, port)); 200 expected_nameservers.push_back(IPEndPoint(ip, port));
188 } 201 }
189 202
190 DnsConfig config; 203 DnsConfig config;
191 internal::ConfigParseWinResult result = 204 internal::ConfigParseWinResult result =
192 internal::ConvertSettingsToDnsConfig(settings, &config); 205 internal::ConvertSettingsToDnsConfig(settings, &config);
193 internal::ConfigParseWinResult expected_result = 206 internal::ConfigParseWinResult expected_result =
194 expected_nameservers.empty() ? internal::CONFIG_PARSE_WIN_NO_NAMESERVERS 207 expected_nameservers.empty() ? internal::CONFIG_PARSE_WIN_NO_NAMESERVERS
195 : internal::CONFIG_PARSE_WIN_OK; 208 : internal::CONFIG_PARSE_WIN_OK;
196 EXPECT_EQ(expected_result, result); 209 EXPECT_EQ(expected_result, result);
197 EXPECT_EQ(expected_nameservers, config.nameservers); 210 EXPECT_EQ(expected_nameservers, config.nameservers);
198 if (result == internal::CONFIG_PARSE_WIN_OK) { 211 if (result == internal::CONFIG_PARSE_WIN_OK) {
199 ASSERT_EQ(1u, config.search.size()); 212 ASSERT_EQ(1u, config.search.size());
200 EXPECT_EQ(t.expected_suffix, config.search[0]); 213 EXPECT_EQ(t.expected_suffix, config.search[0]);
201 } 214 }
202 } 215 }
203 } 216 }
204 217
205 TEST(DnsConfigServiceWinTest, ConvertSuffixSearch) { 218 TEST(DnsConfigServiceWinTest, ConvertSuffixSearch) {
206 AdapterInfo infos[2] = { 219 AdapterInfo infos[2] = {
207 { IF_TYPE_USB, IfOperStatusUp, L"connection.suffix", { "1.0.0.1" } }, 220 {IF_TYPE_USB, IfOperStatusUp, L"connection.suffix", {"1.0.0.1"}}, {0},
208 { 0 },
209 }; 221 };
210 222
211 const struct TestCase { 223 const struct TestCase {
212 internal::DnsSystemSettings input_settings; 224 internal::DnsSystemSettings input_settings;
213 std::string expected_search[5]; 225 std::string expected_search[5];
214 } cases[] = { 226 } cases[] = {
215 { // Policy SearchList override. 227 {// Policy SearchList override.
216 { 228 {
217 CreateAdapterAddresses(infos), 229 CreateAdapterAddresses(infos),
218 { true, L"policy.searchlist.a,policy.searchlist.b" }, 230 {true, L"policy.searchlist.a,policy.searchlist.b"},
219 { true, L"tcpip.searchlist.a,tcpip.searchlist.b" }, 231 {true, L"tcpip.searchlist.a,tcpip.searchlist.b"},
220 { true, L"tcpip.domain" }, 232 {true, L"tcpip.domain"},
221 { true, L"primary.dns.suffix" }, 233 {true, L"primary.dns.suffix"},
222 }, 234 },
223 { "policy.searchlist.a", "policy.searchlist.b" }, 235 {"policy.searchlist.a", "policy.searchlist.b"},
224 }, 236 },
225 { // User-specified SearchList override. 237 {// User-specified SearchList override.
226 { 238 {
227 CreateAdapterAddresses(infos), 239 CreateAdapterAddresses(infos),
228 { false }, 240 {false},
229 { true, L"tcpip.searchlist.a,tcpip.searchlist.b" }, 241 {true, L"tcpip.searchlist.a,tcpip.searchlist.b"},
230 { true, L"tcpip.domain" }, 242 {true, L"tcpip.domain"},
231 { true, L"primary.dns.suffix" }, 243 {true, L"primary.dns.suffix"},
232 }, 244 },
233 { "tcpip.searchlist.a", "tcpip.searchlist.b" }, 245 {"tcpip.searchlist.a", "tcpip.searchlist.b"},
234 }, 246 },
235 { // Void SearchList. Using tcpip.domain 247 {// Void SearchList. Using tcpip.domain
236 { 248 {
237 CreateAdapterAddresses(infos), 249 CreateAdapterAddresses(infos),
238 { true, L",bad.searchlist,parsed.as.empty" }, 250 {true, L",bad.searchlist,parsed.as.empty"},
239 { true, L"tcpip.searchlist,good.but.overridden" }, 251 {true, L"tcpip.searchlist,good.but.overridden"},
240 { true, L"tcpip.domain" }, 252 {true, L"tcpip.domain"},
241 { false }, 253 {false},
242 }, 254 },
243 { "tcpip.domain", "connection.suffix" }, 255 {"tcpip.domain", "connection.suffix"},
244 }, 256 },
245 { // Void SearchList. Using primary.dns.suffix 257 {// Void SearchList. Using primary.dns.suffix
246 { 258 {
247 CreateAdapterAddresses(infos), 259 CreateAdapterAddresses(infos),
248 { true, L",bad.searchlist,parsed.as.empty" }, 260 {true, L",bad.searchlist,parsed.as.empty"},
249 { true, L"tcpip.searchlist,good.but.overridden" }, 261 {true, L"tcpip.searchlist,good.but.overridden"},
250 { true, L"tcpip.domain" }, 262 {true, L"tcpip.domain"},
251 { true, L"primary.dns.suffix" }, 263 {true, L"primary.dns.suffix"},
252 }, 264 },
253 { "primary.dns.suffix", "connection.suffix" }, 265 {"primary.dns.suffix", "connection.suffix"},
254 }, 266 },
255 { // Void SearchList. Using tcpip.domain when primary.dns.suffix is empty 267 {// Void SearchList. Using tcpip.domain when primary.dns.suffix is empty
256 { 268 {
257 CreateAdapterAddresses(infos), 269 CreateAdapterAddresses(infos),
258 { true, L",bad.searchlist,parsed.as.empty" }, 270 {true, L",bad.searchlist,parsed.as.empty"},
259 { true, L"tcpip.searchlist,good.but.overridden" }, 271 {true, L"tcpip.searchlist,good.but.overridden"},
260 { true, L"tcpip.domain" }, 272 {true, L"tcpip.domain"},
261 { true, L"" }, 273 {true, L""},
262 }, 274 },
263 { "tcpip.domain", "connection.suffix" }, 275 {"tcpip.domain", "connection.suffix"},
264 }, 276 },
265 { // Void SearchList. Using tcpip.domain when primary.dns.suffix is NULL 277 {// Void SearchList. Using tcpip.domain when primary.dns.suffix is NULL
266 { 278 {
267 CreateAdapterAddresses(infos), 279 CreateAdapterAddresses(infos),
268 { true, L",bad.searchlist,parsed.as.empty" }, 280 {true, L",bad.searchlist,parsed.as.empty"},
269 { true, L"tcpip.searchlist,good.but.overridden" }, 281 {true, L"tcpip.searchlist,good.but.overridden"},
270 { true, L"tcpip.domain" }, 282 {true, L"tcpip.domain"},
271 { true }, 283 {true},
272 }, 284 },
273 { "tcpip.domain", "connection.suffix" }, 285 {"tcpip.domain", "connection.suffix"},
274 }, 286 },
275 { // No primary suffix. Devolution does not matter. 287 {// No primary suffix. Devolution does not matter.
276 { 288 {
277 CreateAdapterAddresses(infos), 289 CreateAdapterAddresses(infos),
278 { false }, 290 {false},
279 { false }, 291 {false},
280 { true }, 292 {true},
281 { true }, 293 {true},
282 { { true, 1 }, { true, 2 } }, 294 {{true, 1}, {true, 2}},
283 }, 295 },
284 { "connection.suffix" }, 296 {"connection.suffix"},
285 }, 297 },
286 { // Devolution enabled by policy, level by dnscache. 298 {// Devolution enabled by policy, level by dnscache.
287 { 299 {
288 CreateAdapterAddresses(infos), 300 CreateAdapterAddresses(infos),
289 { false }, 301 {false},
290 { false }, 302 {false},
291 { true, L"a.b.c.d.e" }, 303 {true, L"a.b.c.d.e"},
292 { false }, 304 {false},
293 { { true, 1 }, { false } }, // policy_devolution: enabled, level 305 {{true, 1}, {false}}, // policy_devolution: enabled, level
294 { { true, 0 }, { true, 3 } }, // dnscache_devolution 306 {{true, 0}, {true, 3}}, // dnscache_devolution
295 { { true, 0 }, { true, 1 } }, // tcpip_devolution 307 {{true, 0}, {true, 1}}, // tcpip_devolution
296 }, 308 },
297 { "a.b.c.d.e", "connection.suffix", "b.c.d.e", "c.d.e" }, 309 {"a.b.c.d.e", "connection.suffix", "b.c.d.e", "c.d.e"},
298 }, 310 },
299 { // Devolution enabled by dnscache, level by policy. 311 {// Devolution enabled by dnscache, level by policy.
300 { 312 {
301 CreateAdapterAddresses(infos), 313 CreateAdapterAddresses(infos),
302 { false }, 314 {false},
303 { false }, 315 {false},
304 { true, L"a.b.c.d.e" }, 316 {true, L"a.b.c.d.e"},
305 { true, L"f.g.i.l.j" }, 317 {true, L"f.g.i.l.j"},
306 { { false }, { true, 4 } }, 318 {{false}, {true, 4}},
307 { { true, 1 }, { false } }, 319 {{true, 1}, {false}},
308 { { true, 0 }, { true, 3 } }, 320 {{true, 0}, {true, 3}},
309 }, 321 },
310 { "f.g.i.l.j", "connection.suffix", "g.i.l.j" }, 322 {"f.g.i.l.j", "connection.suffix", "g.i.l.j"},
311 }, 323 },
312 { // Devolution enabled by default. 324 {// Devolution enabled by default.
313 { 325 {
314 CreateAdapterAddresses(infos), 326 CreateAdapterAddresses(infos),
315 { false }, 327 {false},
316 { false }, 328 {false},
317 { true, L"a.b.c.d.e" }, 329 {true, L"a.b.c.d.e"},
318 { false }, 330 {false},
319 { { false }, { false } }, 331 {{false}, {false}},
320 { { false }, { true, 3 } }, 332 {{false}, {true, 3}},
321 { { false }, { true, 1 } }, 333 {{false}, {true, 1}},
322 }, 334 },
323 { "a.b.c.d.e", "connection.suffix", "b.c.d.e", "c.d.e" }, 335 {"a.b.c.d.e", "connection.suffix", "b.c.d.e", "c.d.e"},
324 }, 336 },
325 { // Devolution enabled at level = 2, but nothing to devolve. 337 {// Devolution enabled at level = 2, but nothing to devolve.
326 { 338 {
327 CreateAdapterAddresses(infos), 339 CreateAdapterAddresses(infos),
328 { false }, 340 {false},
329 { false }, 341 {false},
330 { true, L"a.b" }, 342 {true, L"a.b"},
331 { false }, 343 {false},
332 { { false }, { false } }, 344 {{false}, {false}},
333 { { false }, { true, 2 } }, 345 {{false}, {true, 2}},
334 { { false }, { true, 2 } }, 346 {{false}, {true, 2}},
335 }, 347 },
336 { "a.b", "connection.suffix" }, 348 {"a.b", "connection.suffix"},
337 }, 349 },
338 { // Devolution disabled when no explicit level. 350 {// Devolution disabled when no explicit level.
339 // Windows XP and Vista use a default level = 2, but we don't. 351 // Windows XP and Vista use a default level = 2, but we don't.
340 { 352 {
341 CreateAdapterAddresses(infos), 353 CreateAdapterAddresses(infos),
342 { false }, 354 {false},
343 { false }, 355 {false},
344 { true, L"a.b.c.d.e" }, 356 {true, L"a.b.c.d.e"},
345 { false }, 357 {false},
346 { { true, 1 }, { false } }, 358 {{true, 1}, {false}},
347 { { true, 1 }, { false } }, 359 {{true, 1}, {false}},
348 { { true, 1 }, { false } }, 360 {{true, 1}, {false}},
349 }, 361 },
350 { "a.b.c.d.e", "connection.suffix" }, 362 {"a.b.c.d.e", "connection.suffix"},
351 }, 363 },
352 { // Devolution disabled by policy level. 364 {// Devolution disabled by policy level.
353 { 365 {
354 CreateAdapterAddresses(infos), 366 CreateAdapterAddresses(infos),
355 { false }, 367 {false},
356 { false }, 368 {false},
357 { true, L"a.b.c.d.e" }, 369 {true, L"a.b.c.d.e"},
358 { false }, 370 {false},
359 { { false }, { true, 1 } }, 371 {{false}, {true, 1}},
360 { { true, 1 }, { true, 3 } }, 372 {{true, 1}, {true, 3}},
361 { { true, 1 }, { true, 4 } }, 373 {{true, 1}, {true, 4}},
362 }, 374 },
363 { "a.b.c.d.e", "connection.suffix" }, 375 {"a.b.c.d.e", "connection.suffix"},
364 }, 376 },
365 { // Devolution disabled by user setting. 377 {// Devolution disabled by user setting.
366 { 378 {
367 CreateAdapterAddresses(infos), 379 CreateAdapterAddresses(infos),
368 { false }, 380 {false},
369 { false }, 381 {false},
370 { true, L"a.b.c.d.e" }, 382 {true, L"a.b.c.d.e"},
371 { false }, 383 {false},
372 { { false }, { true, 3 } }, 384 {{false}, {true, 3}},
373 { { false }, { true, 3 } }, 385 {{false}, {true, 3}},
374 { { true, 0 }, { true, 3 } }, 386 {{true, 0}, {true, 3}},
375 }, 387 },
376 { "a.b.c.d.e", "connection.suffix" }, 388 {"a.b.c.d.e", "connection.suffix"},
377 }, 389 },
378 }; 390 };
379 391
380 for (size_t i = 0; i < arraysize(cases); ++i) { 392 for (size_t i = 0; i < arraysize(cases); ++i) {
381 const TestCase& t = cases[i]; 393 const TestCase& t = cases[i];
382 DnsConfig config; 394 DnsConfig config;
383 EXPECT_EQ(internal::CONFIG_PARSE_WIN_OK, 395 EXPECT_EQ(internal::CONFIG_PARSE_WIN_OK,
384 internal::ConvertSettingsToDnsConfig(t.input_settings, &config)); 396 internal::ConvertSettingsToDnsConfig(t.input_settings, &config));
385 std::vector<std::string> expected_search; 397 std::vector<std::string> expected_search;
386 for (size_t j = 0; !t.expected_search[j].empty(); ++j) { 398 for (size_t j = 0; !t.expected_search[j].empty(); ++j) {
387 expected_search.push_back(t.expected_search[j]); 399 expected_search.push_back(t.expected_search[j]);
388 } 400 }
389 EXPECT_EQ(expected_search, config.search); 401 EXPECT_EQ(expected_search, config.search);
390 } 402 }
391 } 403 }
392 404
393 TEST(DnsConfigServiceWinTest, AppendToMultiLabelName) { 405 TEST(DnsConfigServiceWinTest, AppendToMultiLabelName) {
394 AdapterInfo infos[2] = { 406 AdapterInfo infos[2] = {
395 { IF_TYPE_USB, IfOperStatusUp, L"connection.suffix", { "1.0.0.1" } }, 407 {IF_TYPE_USB, IfOperStatusUp, L"connection.suffix", {"1.0.0.1"}}, {0},
396 { 0 },
397 }; 408 };
398 409
399 // The default setting was true pre-Vista. 410 // The default setting was true pre-Vista.
400 bool default_value = (base::win::GetVersion() < base::win::VERSION_VISTA); 411 bool default_value = (base::win::GetVersion() < base::win::VERSION_VISTA);
401 412
402 const struct TestCase { 413 const struct TestCase {
403 internal::DnsSystemSettings::RegDword input; 414 internal::DnsSystemSettings::RegDword input;
404 bool expected_output; 415 bool expected_output;
405 } cases[] = { 416 } cases[] = {
406 { { true, 0 }, false }, 417 {{true, 0}, false}, {{true, 1}, true}, {{false, 0}, default_value},
407 { { true, 1 }, true }, 418 };
408 { { false, 0 }, default_value },
409 };
410 419
411 for (size_t i = 0; i < arraysize(cases); ++i) { 420 for (size_t i = 0; i < arraysize(cases); ++i) {
412 const TestCase& t = cases[i]; 421 const TestCase& t = cases[i];
413 internal::DnsSystemSettings settings = { 422 internal::DnsSystemSettings settings = {
414 CreateAdapterAddresses(infos), 423 CreateAdapterAddresses(infos),
415 { false }, { false }, { false }, { false }, 424 {false},
416 { { false }, { false } }, 425 {false},
417 { { false }, { false } }, 426 {false},
418 { { false }, { false } }, 427 {false},
419 t.input, 428 {{false}, {false}},
429 {{false}, {false}},
430 {{false}, {false}},
431 t.input,
420 }; 432 };
421 DnsConfig config; 433 DnsConfig config;
422 EXPECT_EQ(internal::CONFIG_PARSE_WIN_OK, 434 EXPECT_EQ(internal::CONFIG_PARSE_WIN_OK,
423 internal::ConvertSettingsToDnsConfig(settings, &config)); 435 internal::ConvertSettingsToDnsConfig(settings, &config));
424 EXPECT_EQ(t.expected_output, config.append_to_multi_label_name); 436 EXPECT_EQ(t.expected_output, config.append_to_multi_label_name);
425 } 437 }
426 } 438 }
427 439
428 // Setting have_name_resolution_policy_table should set unhandled_options. 440 // Setting have_name_resolution_policy_table should set unhandled_options.
429 TEST(DnsConfigServiceWinTest, HaveNRPT) { 441 TEST(DnsConfigServiceWinTest, HaveNRPT) {
430 AdapterInfo infos[2] = { 442 AdapterInfo infos[2] = {
431 { IF_TYPE_USB, IfOperStatusUp, L"connection.suffix", { "1.0.0.1" } }, 443 {IF_TYPE_USB, IfOperStatusUp, L"connection.suffix", {"1.0.0.1"}}, {0},
432 { 0 },
433 }; 444 };
434 445
435 const struct TestCase { 446 const struct TestCase {
436 bool have_nrpt; 447 bool have_nrpt;
437 bool unhandled_options; 448 bool unhandled_options;
438 internal::ConfigParseWinResult result; 449 internal::ConfigParseWinResult result;
439 } cases[] = { 450 } cases[] = {
440 { false, false, internal::CONFIG_PARSE_WIN_OK }, 451 {false, false, internal::CONFIG_PARSE_WIN_OK},
441 { true, true, internal::CONFIG_PARSE_WIN_UNHANDLED_OPTIONS }, 452 {true, true, internal::CONFIG_PARSE_WIN_UNHANDLED_OPTIONS},
442 }; 453 };
443 454
444 for (size_t i = 0; i < arraysize(cases); ++i) { 455 for (size_t i = 0; i < arraysize(cases); ++i) {
445 const TestCase& t = cases[i]; 456 const TestCase& t = cases[i];
446 internal::DnsSystemSettings settings = { 457 internal::DnsSystemSettings settings = {
447 CreateAdapterAddresses(infos), 458 CreateAdapterAddresses(infos),
448 { false }, { false }, { false }, { false }, 459 {false},
449 { { false }, { false } }, 460 {false},
450 { { false }, { false } }, 461 {false},
451 { { false }, { false } }, 462 {false},
452 { false }, 463 {{false}, {false}},
453 t.have_nrpt, 464 {{false}, {false}},
465 {{false}, {false}},
466 {false},
467 t.have_nrpt,
454 }; 468 };
455 DnsConfig config; 469 DnsConfig config;
456 EXPECT_EQ(t.result, 470 EXPECT_EQ(t.result,
457 internal::ConvertSettingsToDnsConfig(settings, &config)); 471 internal::ConvertSettingsToDnsConfig(settings, &config));
458 EXPECT_EQ(t.unhandled_options, config.unhandled_options); 472 EXPECT_EQ(t.unhandled_options, config.unhandled_options);
459 EXPECT_EQ(t.have_nrpt, config.use_local_ipv6); 473 EXPECT_EQ(t.have_nrpt, config.use_local_ipv6);
460 } 474 }
461 } 475 }
462 476
463
464 } // namespace 477 } // namespace
465 478
466 } // namespace net 479 } // namespace net
467
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698