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

Unified Diff: net/dns/dns_hosts_unittest.cc

Issue 415153002: ParseHosts: Allow commas as separators on Mac OS X (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nits Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/dns/dns_hosts.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/dns/dns_hosts_unittest.cc
diff --git a/net/dns/dns_hosts_unittest.cc b/net/dns/dns_hosts_unittest.cc
index c0e8805fc47dfdf97de79e6c48746650fb27e811..90748992890aa2753a2eb8e33af29ac5e6a690c3 100644
--- a/net/dns/dns_hosts_unittest.cc
+++ b/net/dns/dns_hosts_unittest.cc
@@ -10,8 +10,27 @@ namespace net {
namespace {
+struct ExpectedHostsEntry {
+ const char* host;
+ AddressFamily family;
+ const char* ip;
+};
+
+void PopulateExpectedHosts(const ExpectedHostsEntry* entries,
+ size_t num_entries,
+ DnsHosts* expected_hosts_out) {
+ for (size_t i = 0; i < num_entries; ++i) {
+ DnsHostsKey key(entries[i].host, entries[i].family);
+ IPAddressNumber& ip_ref = (*expected_hosts_out)[key];
+ ASSERT_TRUE(ip_ref.empty());
+ ASSERT_TRUE(ParseIPLiteralToNumber(entries[i].ip, &ip_ref));
+ ASSERT_EQ(ip_ref.size(),
+ (entries[i].family == ADDRESS_FAMILY_IPV4) ? 4u : 16u);
+ }
+}
+
TEST(DnsHostsTest, ParseHosts) {
- std::string contents =
+ const std::string kContents =
"127.0.0.1 localhost\tlocalhost.localdomain # standard\n"
"\n"
"1.0.0.1 localhost # ignored, first hit above\n"
@@ -30,11 +49,7 @@ TEST(DnsHostsTest, ParseHosts) {
"127.0.0.2 cache5\n"
"gibberish";
- const struct {
- const char* host;
- AddressFamily family;
- const char* ip;
- } entries[] = {
+ const ExpectedHostsEntry kEntries[] = {
{ "localhost", ADDRESS_FAMILY_IPV4, "127.0.0.1" },
{ "localhost.localdomain", ADDRESS_FAMILY_IPV4, "127.0.0.1" },
{ "company", ADDRESS_FAMILY_IPV4, "1.0.0.1" },
@@ -50,18 +65,60 @@ TEST(DnsHostsTest, ParseHosts) {
{ "cache5", ADDRESS_FAMILY_IPV4, "127.0.0.2" },
};
- DnsHosts expected;
- for (size_t i = 0; i < ARRAYSIZE_UNSAFE(entries); ++i) {
- DnsHostsKey key(entries[i].host, entries[i].family);
- IPAddressNumber& ip = expected[key];
- ASSERT_TRUE(ip.empty());
- ASSERT_TRUE(ParseIPLiteralToNumber(entries[i].ip, &ip));
- ASSERT_EQ(ip.size(), (entries[i].family == ADDRESS_FAMILY_IPV4) ? 4u : 16u);
- }
+ DnsHosts expected_hosts, actual_hosts;
+ PopulateExpectedHosts(kEntries, ARRAYSIZE_UNSAFE(kEntries), &expected_hosts);
+ ParseHosts(kContents, &actual_hosts);
+ ASSERT_EQ(expected_hosts, actual_hosts);
+}
- DnsHosts hosts;
- ParseHosts(contents, &hosts);
- ASSERT_EQ(expected, hosts);
+TEST(DnsHostsTest, ParseHosts_CommaIsToken) {
+ const std::string kContents = "127.0.0.1 comma1,comma2";
+
+ const ExpectedHostsEntry kEntries[] = {
+ { "comma1,comma2", ADDRESS_FAMILY_IPV4, "127.0.0.1" },
+ };
+
+ DnsHosts expected_hosts, actual_hosts;
+ PopulateExpectedHosts(kEntries, ARRAYSIZE_UNSAFE(kEntries), &expected_hosts);
+ ParseHostsWithCommaModeForTesting(
+ kContents, &actual_hosts, PARSE_HOSTS_COMMA_IS_TOKEN);
+ ASSERT_EQ(expected_hosts, actual_hosts);
+}
+
+TEST(DnsHostsTest, ParseHosts_CommaIsWhitespace) {
+ std::string kContents = "127.0.0.1 comma1,comma2";
+
+ const ExpectedHostsEntry kEntries[] = {
+ { "comma1", ADDRESS_FAMILY_IPV4, "127.0.0.1" },
+ { "comma2", ADDRESS_FAMILY_IPV4, "127.0.0.1" },
+ };
+
+ DnsHosts expected_hosts, actual_hosts;
+ PopulateExpectedHosts(kEntries, ARRAYSIZE_UNSAFE(kEntries), &expected_hosts);
+ ParseHostsWithCommaModeForTesting(
+ kContents, &actual_hosts, PARSE_HOSTS_COMMA_IS_WHITESPACE);
+ ASSERT_EQ(expected_hosts, actual_hosts);
+}
+
+// Test that the right comma mode is used on each platform.
+TEST(DnsHostsTest, ParseHosts_CommaModeByPlatform) {
+ std::string kContents = "127.0.0.1 comma1,comma2";
+
+#if defined(OS_MACOSX)
+ const ExpectedHostsEntry kEntries[] = {
+ { "comma1", ADDRESS_FAMILY_IPV4, "127.0.0.1" },
+ { "comma2", ADDRESS_FAMILY_IPV4, "127.0.0.1" },
+ };
+#else
+ const ExpectedHostsEntry kEntries[] = {
+ { "comma1,comma2", ADDRESS_FAMILY_IPV4, "127.0.0.1" },
+ };
+#endif
+
+ DnsHosts expected_hosts, actual_hosts;
+ PopulateExpectedHosts(kEntries, ARRAYSIZE_UNSAFE(kEntries), &expected_hosts);
+ ParseHosts(kContents, &actual_hosts);
+ ASSERT_EQ(expected_hosts, actual_hosts);
}
TEST(DnsHostsTest, HostsParser_Empty) {
« no previous file with comments | « net/dns/dns_hosts.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698