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

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

Issue 42013: Slight code change to make some global variables const. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 11 years, 9 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
« no previous file with comments | « net/base/net_util.cc ('k') | net/base/nss_memio.c » ('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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "base/string_util.h" 7 #include "base/string_util.h"
8 #include "base/time.h" 8 #include "base/time.h"
9 #include "googleurl/src/gurl.h" 9 #include "googleurl/src/gurl.h"
10 #include "net/base/net_util.h" 10 #include "net/base/net_util.h"
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 return ai; 109 return ai;
110 } 110 }
111 111
112 } // anonymous namespace 112 } // anonymous namespace
113 113
114 TEST(NetUtilTest, FileURLConversion) { 114 TEST(NetUtilTest, FileURLConversion) {
115 // a list of test file names and the corresponding URLs 115 // a list of test file names and the corresponding URLs
116 const FileCase round_trip_cases[] = { 116 const FileCase round_trip_cases[] = {
117 #if defined(OS_WIN) 117 #if defined(OS_WIN)
118 {L"C:\\foo\\bar.txt", L"file:///C:/foo/bar.txt"}, 118 {L"C:\\foo\\bar.txt", L"file:///C:/foo/bar.txt"},
119 {L"\\\\some computer\\foo\\bar.txt", L"file://some%20computer/foo/bar.txt"}, // UNC 119 {L"\\\\some computer\\foo\\bar.txt",
120 {L"D:\\Name;with%some symbols*#", L"file:///D:/Name%3Bwith%25some%20symbols* %23"}, 120 L"file://some%20computer/foo/bar.txt"}, // UNC
121 {L"D:\\Chinese\\\x6240\x6709\x4e2d\x6587\x7f51\x9875.doc", L"file:///D:/Chin ese/%E6%89%80%E6%9C%89%E4%B8%AD%E6%96%87%E7%BD%91%E9%A1%B5.doc"}, 121 {L"D:\\Name;with%some symbols*#",
122 L"file:///D:/Name%3Bwith%25some%20symbols*%23"},
123 {L"D:\\Chinese\\\x6240\x6709\x4e2d\x6587\x7f51\x9875.doc",
124 L"file:///D:/Chinese/%E6%89%80%E6%9C%89%E4%B8%AD%E6%96%87%E7%BD%91"
125 L"%E9%A1%B5.doc"},
122 #elif defined(OS_POSIX) 126 #elif defined(OS_POSIX)
123 {L"/foo/bar.txt", L"file:///foo/bar.txt"}, 127 {L"/foo/bar.txt", L"file:///foo/bar.txt"},
124 {L"/foo/BAR.txt", L"file:///foo/BAR.txt"}, 128 {L"/foo/BAR.txt", L"file:///foo/BAR.txt"},
125 {L"/C:/foo/bar.txt", L"file:///C:/foo/bar.txt"}, 129 {L"/C:/foo/bar.txt", L"file:///C:/foo/bar.txt"},
126 {L"/some computer/foo/bar.txt", L"file:///some%20computer/foo/bar.txt"}, 130 {L"/some computer/foo/bar.txt", L"file:///some%20computer/foo/bar.txt"},
127 {L"/Name;with%some symbols*#", L"file:///Name%3Bwith%25some%20symbols*%23"}, 131 {L"/Name;with%some symbols*#", L"file:///Name%3Bwith%25some%20symbols*%23"},
128 {L"/Chinese/\x6240\x6709\x4e2d\x6587\x7f51\x9875.doc", L"file:///Chinese/%E6 %89%80%E6%9C%89%E4%B8%AD%E6%96%87%E7%BD%91%E9%A1%B5.doc"}, 132 {L"/Chinese/\x6240\x6709\x4e2d\x6587\x7f51\x9875.doc",
133 L"file:///Chinese/%E6%89%80%E6%9C%89%E4%B8%AD%E6%96%87%E7%BD"
134 L"%91%E9%A1%B5.doc"},
129 #endif 135 #endif
130 }; 136 };
131 137
132 // First, we'll test that we can round-trip all of the above cases of URLs 138 // First, we'll test that we can round-trip all of the above cases of URLs
133 std::wstring output; 139 std::wstring output;
134 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(round_trip_cases); i++) { 140 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(round_trip_cases); i++) {
135 // convert to the file URL 141 // convert to the file URL
136 GURL file_url(net::FilePathToFileURL(round_trip_cases[i].file)); 142 GURL file_url(net::FilePathToFileURL(round_trip_cases[i].file));
137 EXPECT_EQ(std::wstring(round_trip_cases[i].url), 143 EXPECT_EQ(std::wstring(round_trip_cases[i].url),
138 UTF8ToWide(file_url.spec())); 144 UTF8ToWide(file_url.spec()));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 #endif 183 #endif
178 }; 184 };
179 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(url_cases); i++) { 185 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(url_cases); i++) {
180 net::FileURLToFilePath(GURL(WideToUTF8(url_cases[i].url)), &output); 186 net::FileURLToFilePath(GURL(WideToUTF8(url_cases[i].url)), &output);
181 EXPECT_EQ(std::wstring(url_cases[i].file), output); 187 EXPECT_EQ(std::wstring(url_cases[i].file), output);
182 } 188 }
183 189
184 // Here, we test that UTF-8 encoded strings get decoded properly, even when 190 // Here, we test that UTF-8 encoded strings get decoded properly, even when
185 // they might be stored with wide characters. On posix systems, just treat 191 // they might be stored with wide characters. On posix systems, just treat
186 // this as a stream of bytes. 192 // this as a stream of bytes.
187 const wchar_t utf8[] = L"file:///d:/Chinese/\xe6\x89\x80\xe6\x9c\x89\xe4\xb8\x ad\xe6\x96\x87\xe7\xbd\x91\xe9\xa1\xb5.doc"; 193 const wchar_t utf8[] = L"file:///d:/Chinese/\xe6\x89\x80\xe6\x9c\x89\xe4\xb8"
194 L"\xad\xe6\x96\x87\xe7\xbd\x91\xe9\xa1\xb5.doc";
188 #if defined(OS_WIN) 195 #if defined(OS_WIN)
189 const wchar_t wide[] = L"D:\\Chinese\\\x6240\x6709\x4e2d\x6587\x7f51\x9875.doc "; 196 const wchar_t wide[] =
197 L"D:\\Chinese\\\x6240\x6709\x4e2d\x6587\x7f51\x9875.doc";
190 #elif defined(OS_POSIX) 198 #elif defined(OS_POSIX)
191 const wchar_t wide[] = L"/d:/Chinese/\xe6\x89\x80\xe6\x9c\x89\xe4\xb8\xad\xe6\ x96\x87\xe7\xbd\x91\xe9\xa1\xb5.doc"; 199 const wchar_t wide[] = L"/d:/Chinese/\xe6\x89\x80\xe6\x9c\x89\xe4\xb8\xad\xe6"
200 L"\x96\x87\xe7\xbd\x91\xe9\xa1\xb5.doc";
192 #endif 201 #endif
193 EXPECT_TRUE(net::FileURLToFilePath(GURL(WideToUTF8(utf8)), &output)); 202 EXPECT_TRUE(net::FileURLToFilePath(GURL(WideToUTF8(utf8)), &output));
194 EXPECT_EQ(std::wstring(wide), output); 203 EXPECT_EQ(std::wstring(wide), output);
195 204
196 // Unfortunately, UTF8ToWide discards invalid UTF8 input. 205 // Unfortunately, UTF8ToWide discards invalid UTF8 input.
197 #ifdef BUG_878908_IS_FIXED 206 #ifdef BUG_878908_IS_FIXED
198 // Test that no conversion happens if the UTF-8 input is invalid, and that 207 // Test that no conversion happens if the UTF-8 input is invalid, and that
199 // the input is preserved in UTF-8 208 // the input is preserved in UTF-8
200 const char invalid_utf8[] = "file:///d:/Blah/\xff.doc"; 209 const char invalid_utf8[] = "file:///d:/Blah/\xff.doc";
201 const wchar_t invalid_wide[] = L"D:\\Blah\\\xff.doc"; 210 const wchar_t invalid_wide[] = L"D:\\Blah\\\xff.doc";
(...skipping 11 matching lines...) Expand all
213 L"HTTP/1.1 200 OK\n" 222 L"HTTP/1.1 200 OK\n"
214 L"Content-TYPE: text/html; charset=utf-8\n" 223 L"Content-TYPE: text/html; charset=utf-8\n"
215 L"Content-disposition: attachment; filename=\"download.pdf\"\n" 224 L"Content-disposition: attachment; filename=\"download.pdf\"\n"
216 L"Content-Length: 378557\n" 225 L"Content-Length: 378557\n"
217 L"X-Google-Google1: 314159265\n" 226 L"X-Google-Google1: 314159265\n"
218 L"X-Google-Google2: aaaa2:7783,bbb21:9441\n" 227 L"X-Google-Google2: aaaa2:7783,bbb21:9441\n"
219 L"X-Google-Google4: home\n" 228 L"X-Google-Google4: home\n"
220 L"Transfer-Encoding: chunked\n" 229 L"Transfer-Encoding: chunked\n"
221 L"Set-Cookie: HEHE_AT=6666x66beef666x6-66xx6666x66; Path=/mail\n" 230 L"Set-Cookie: HEHE_AT=6666x66beef666x6-66xx6666x66; Path=/mail\n"
222 L"Set-Cookie: HEHE_HELP=owned:0;Path=/\n" 231 L"Set-Cookie: HEHE_HELP=owned:0;Path=/\n"
223 L"Set-Cookie: S=gmail=Xxx-beefbeefbeef_beefb:gmail_yj=beefbeef000beefbeefbee :gmproxy=bee-fbeefbe; Domain=.google.com; Path=/\n" 232 L"Set-Cookie: S=gmail=Xxx-beefbeefbeef_beefb:gmail_yj=beefbeef000beefbee"
233 L"fbee:gmproxy=bee-fbeefbe; Domain=.google.com; Path=/\n"
224 L"X-Google-Google2: /one/two/three/four/five/six/seven-height/nine:9411\n" 234 L"X-Google-Google2: /one/two/three/four/five/six/seven-height/nine:9411\n"
225 L"Server: GFE/1.3\n" 235 L"Server: GFE/1.3\n"
226 L"Transfer-Encoding: chunked\n" 236 L"Transfer-Encoding: chunked\n"
227 L"Date: Mon, 13 Nov 2006 21:38:09 GMT\n" 237 L"Date: Mon, 13 Nov 2006 21:38:09 GMT\n"
228 L"Expires: Tue, 14 Nov 2006 19:23:58 GMT\n" 238 L"Expires: Tue, 14 Nov 2006 19:23:58 GMT\n"
229 L"X-Malformed: bla; arg=test\"\n" 239 L"X-Malformed: bla; arg=test\"\n"
230 L"X-Malformed2: bla; arg=\n" 240 L"X-Malformed2: bla; arg=\n"
231 L"X-Test: bla; arg1=val1; arg2=val2"; 241 L"X-Test: bla; arg1=val1; arg2=val2";
232 242
233 TEST(NetUtilTest, GetSpecificHeader) { 243 TEST(NetUtilTest, GetSpecificHeader) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 {"content-disposition: attachment; filename=abc,de.pdf", L"abc,de.pdf"}, 306 {"content-disposition: attachment; filename=abc,de.pdf", L"abc,de.pdf"},
297 {"content-disposition: filename=abcde.pdf", L"abcde.pdf"}, 307 {"content-disposition: filename=abcde.pdf", L"abcde.pdf"},
298 {"content-disposition: filename= abcde.pdf", L"abcde.pdf"}, 308 {"content-disposition: filename= abcde.pdf", L"abcde.pdf"},
299 {"content-disposition: filename =abcde.pdf", L"abcde.pdf"}, 309 {"content-disposition: filename =abcde.pdf", L"abcde.pdf"},
300 {"content-disposition: filename = abcde.pdf", L"abcde.pdf"}, 310 {"content-disposition: filename = abcde.pdf", L"abcde.pdf"},
301 {"content-disposition: filename\t=abcde.pdf", L"abcde.pdf"}, 311 {"content-disposition: filename\t=abcde.pdf", L"abcde.pdf"},
302 {"content-disposition: filename \t\t =abcde.pdf", L"abcde.pdf"}, 312 {"content-disposition: filename \t\t =abcde.pdf", L"abcde.pdf"},
303 {"content-disposition: name=abcde.pdf", L"abcde.pdf"}, 313 {"content-disposition: name=abcde.pdf", L"abcde.pdf"},
304 {"content-disposition: inline; filename=\"abc%20de.pdf\"", L"abc de.pdf"}, 314 {"content-disposition: inline; filename=\"abc%20de.pdf\"", L"abc de.pdf"},
305 // Whitespaces are converted to a space. 315 // Whitespaces are converted to a space.
306 {"content-disposition: inline; filename=\"abc \t\nde.pdf\"", L"abc de.pd f"}, 316 {"content-disposition: inline; filename=\"abc \t\nde.pdf\"",
317 L"abc de.pdf"},
307 // %-escaped UTF-8 318 // %-escaped UTF-8
308 {"Content-Disposition: attachment; filename=\"%EC%98%88%EC%88%A0%20" 319 {"Content-Disposition: attachment; filename=\"%EC%98%88%EC%88%A0%20"
309 "%EC%98%88%EC%88%A0.jpg\"", L"\xc608\xc220 \xc608\xc220.jpg"}, 320 "%EC%98%88%EC%88%A0.jpg\"", L"\xc608\xc220 \xc608\xc220.jpg"},
310 {"Content-Disposition: attachment; filename=\"%F0%90%8C%B0%F0%90%8C%B1" 321 {"Content-Disposition: attachment; filename=\"%F0%90%8C%B0%F0%90%8C%B1"
311 "abc.jpg\"", L"\U00010330\U00010331abc.jpg"}, 322 "abc.jpg\"", L"\U00010330\U00010331abc.jpg"},
312 {"Content-Disposition: attachment; filename=\"%EC%98%88%EC%88%A0 \n" 323 {"Content-Disposition: attachment; filename=\"%EC%98%88%EC%88%A0 \n"
313 "%EC%98%88%EC%88%A0.jpg\"", L"\xc608\xc220 \xc608\xc220.jpg"}, 324 "%EC%98%88%EC%88%A0.jpg\"", L"\xc608\xc220 \xc608\xc220.jpg"},
314 // RFC 2047 with various charsets and Q/B encodings 325 // RFC 2047 with various charsets and Q/B encodings
315 {"Content-Disposition: attachment; filename=\"=?EUC-JP?Q?=B7=DD=BD=" 326 {"Content-Disposition: attachment; filename=\"=?EUC-JP?Q?=B7=DD=BD="
316 "D13=2Epng?=\"", L"\x82b8\x8853" L"3.png"}, 327 "D13=2Epng?=\"", L"\x82b8\x8853" L"3.png"},
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 false, false, false, false, false, 587 false, false, false, false, false,
577 false}}, 588 false}},
578 // <Greek rho><Cyrillic a><Cyrillic u>.ru 589 // <Greek rho><Cyrillic a><Cyrillic u>.ru
579 {"xn--2xa6t2b.ru", L"\x03c1\x0430\x0443.ru", 590 {"xn--2xa6t2b.ru", L"\x03c1\x0430\x0443.ru",
580 {false, false, false, false, false, 591 {false, false, false, false, false,
581 false, false, false, false, false, 592 false, false, false, false, false,
582 false, false, false, false, false, 593 false, false, false, false, false,
583 false, false, false, false, false, 594 false, false, false, false, false,
584 false}}, 595 false}},
585 // One that's really long that will force a buffer realloc 596 // One that's really long that will force a buffer realloc
586 {"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaa", 597 {"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
587 L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaa", 598 "aaaaaaa",
599 L"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
600 L"aaaaaaaa",
588 {true, true, true, true, true, 601 {true, true, true, true, true,
589 true, true, true, true, true, 602 true, true, true, true, true,
590 true, true, true, true, true, 603 true, true, true, true, true,
591 true, true, true, true, true, 604 true, true, true, true, true,
592 true}}, 605 true}},
593 // Test cases for characters we blacklisted although allowed in IDN. 606 // Test cases for characters we blacklisted although allowed in IDN.
594 // Embedded spaces will be turned to %20 in the display. 607 // Embedded spaces will be turned to %20 in the display.
595 // TODO(jungshik): We need to have more cases. This is a typical 608 // TODO(jungshik): We need to have more cases. This is a typical
596 // data-driven trap. The following test cases need to be separated 609 // data-driven trap. The following test cases need to be separated
597 // and tested only for a couple of languages. 610 // and tested only for a couple of languages.
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 const GetDirectoryListingEntryCase test_cases[] = { 781 const GetDirectoryListingEntryCase test_cases[] = {
769 {"Foo", 782 {"Foo",
770 false, 783 false,
771 10000, 784 10000,
772 base::Time(), 785 base::Time(),
773 "<script>addRow(\"Foo\",\"Foo\",0,\"9.8 kB\",\"\");</script>\n"}, 786 "<script>addRow(\"Foo\",\"Foo\",0,\"9.8 kB\",\"\");</script>\n"},
774 {"quo\"tes", 787 {"quo\"tes",
775 false, 788 false,
776 10000, 789 10000,
777 base::Time(), 790 base::Time(),
778 "<script>addRow(\"quo\\\"tes\",\"quo%22tes\",0,\"9.8 kB\",\"\");</script>\n "}, 791 "<script>addRow(\"quo\\\"tes\",\"quo%22tes\",0,\"9.8 kB\",\"\");</script>"
792 "\n"},
779 }; 793 };
780 794
781 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) { 795 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_cases); ++i) {
782 const std::string results = net::GetDirectoryListingEntry( 796 const std::string results = net::GetDirectoryListingEntry(
783 test_cases[i].name, 797 test_cases[i].name,
784 test_cases[i].is_dir, 798 test_cases[i].is_dir,
785 test_cases[i].filesize, 799 test_cases[i].filesize,
786 test_cases[i].time); 800 test_cases[i].time);
787 EXPECT_EQ(test_cases[i].expected, results); 801 EXPECT_EQ(test_cases[i].expected, results);
788 } 802 }
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
870 } 884 }
871 } 885 }
872 886
873 TEST(NetUtilTest, GetMyHostName) { 887 TEST(NetUtilTest, GetMyHostName) {
874 // We can't check the result of GetMyHostName() directly, since the result 888 // We can't check the result of GetMyHostName() directly, since the result
875 // will differ across machines. Our goal here is to simply exercise the 889 // will differ across machines. Our goal here is to simply exercise the
876 // code path, and check that things "look about right". 890 // code path, and check that things "look about right".
877 std::string my_hostname = net::GetMyHostName(); 891 std::string my_hostname = net::GetMyHostName();
878 EXPECT_FALSE(my_hostname.empty()); 892 EXPECT_FALSE(my_hostname.empty());
879 } 893 }
OLDNEW
« no previous file with comments | « net/base/net_util.cc ('k') | net/base/nss_memio.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698