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

Side by Side Diff: base/files/file_unittest.cc

Issue 189393002: net: Update FileStream to use base::File instead of PlatformFile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use OPEN_ALWAYS on the async unit test Created 6 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 | « base/files/file_posix.cc ('k') | net/base/file_stream.h » ('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) 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 "base/file_util.h" 5 #include "base/file_util.h"
6 #include "base/files/file.h" 6 #include "base/files/file.h"
7 #include "base/files/scoped_temp_dir.h" 7 #include "base/files/scoped_temp_dir.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
11 using base::File; 11 using base::File;
12 using base::FilePath; 12 using base::FilePath;
13 13
14 TEST(File, Create) { 14 TEST(FileTest, Create) {
15 base::ScopedTempDir temp_dir; 15 base::ScopedTempDir temp_dir;
16 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 16 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
17 FilePath file_path = temp_dir.path().AppendASCII("create_file_1"); 17 FilePath file_path = temp_dir.path().AppendASCII("create_file_1");
18 18
19 { 19 {
20 // Open a file that doesn't exist. 20 // Open a file that doesn't exist.
21 File file(file_path, base::File::FLAG_OPEN | base::File::FLAG_READ); 21 File file(file_path, base::File::FLAG_OPEN | base::File::FLAG_READ);
22 EXPECT_FALSE(file.IsValid()); 22 EXPECT_FALSE(file.IsValid());
23 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, file.error_details()); 23 EXPECT_EQ(base::File::FILE_ERROR_NOT_FOUND, file.error_details());
24 } 24 }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_READ | 80 base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_READ |
81 base::File::FLAG_DELETE_ON_CLOSE); 81 base::File::FLAG_DELETE_ON_CLOSE);
82 EXPECT_TRUE(file.IsValid()); 82 EXPECT_TRUE(file.IsValid());
83 EXPECT_TRUE(file.created()); 83 EXPECT_TRUE(file.created());
84 EXPECT_EQ(base::File::FILE_OK, file.error_details()); 84 EXPECT_EQ(base::File::FILE_OK, file.error_details());
85 } 85 }
86 86
87 EXPECT_FALSE(base::PathExists(file_path)); 87 EXPECT_FALSE(base::PathExists(file_path));
88 } 88 }
89 89
90 TEST(File, DeleteOpenFile) { 90 TEST(FileTest, Async) {
91 base::ScopedTempDir temp_dir;
92 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
93 FilePath file_path = temp_dir.path().AppendASCII("create_file");
94
95 {
96 File file(file_path, base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_ASYNC);
97 EXPECT_TRUE(file.IsValid());
98 EXPECT_TRUE(file.async());
99 }
100
101 {
102 File file(file_path, base::File::FLAG_OPEN_ALWAYS);
103 EXPECT_TRUE(file.IsValid());
104 EXPECT_FALSE(file.async());
105 }
106 }
107
108 TEST(FileTest, DeleteOpenFile) {
91 base::ScopedTempDir temp_dir; 109 base::ScopedTempDir temp_dir;
92 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 110 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
93 FilePath file_path = temp_dir.path().AppendASCII("create_file_1"); 111 FilePath file_path = temp_dir.path().AppendASCII("create_file_1");
94 112
95 // Create a file. 113 // Create a file.
96 File file(file_path, 114 File file(file_path,
97 base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_READ | 115 base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_READ |
98 base::File::FLAG_SHARE_DELETE); 116 base::File::FLAG_SHARE_DELETE);
99 EXPECT_TRUE(file.IsValid()); 117 EXPECT_TRUE(file.IsValid());
100 EXPECT_TRUE(file.created()); 118 EXPECT_TRUE(file.created());
101 EXPECT_EQ(base::File::FILE_OK, file.error_details()); 119 EXPECT_EQ(base::File::FILE_OK, file.error_details());
102 120
103 // Open an existing file and mark it as delete on close. 121 // Open an existing file and mark it as delete on close.
104 File same_file(file_path, 122 File same_file(file_path,
105 base::File::FLAG_OPEN | base::File::FLAG_DELETE_ON_CLOSE | 123 base::File::FLAG_OPEN | base::File::FLAG_DELETE_ON_CLOSE |
106 base::File::FLAG_READ); 124 base::File::FLAG_READ);
107 EXPECT_TRUE(file.IsValid()); 125 EXPECT_TRUE(file.IsValid());
108 EXPECT_FALSE(same_file.created()); 126 EXPECT_FALSE(same_file.created());
109 EXPECT_EQ(base::File::FILE_OK, same_file.error_details()); 127 EXPECT_EQ(base::File::FILE_OK, same_file.error_details());
110 128
111 // Close both handles and check that the file is gone. 129 // Close both handles and check that the file is gone.
112 file.Close(); 130 file.Close();
113 same_file.Close(); 131 same_file.Close();
114 EXPECT_FALSE(base::PathExists(file_path)); 132 EXPECT_FALSE(base::PathExists(file_path));
115 } 133 }
116 134
117 TEST(File, ReadWrite) { 135 TEST(FileTest, ReadWrite) {
118 base::ScopedTempDir temp_dir; 136 base::ScopedTempDir temp_dir;
119 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 137 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
120 FilePath file_path = temp_dir.path().AppendASCII("read_write_file"); 138 FilePath file_path = temp_dir.path().AppendASCII("read_write_file");
121 File file(file_path, 139 File file(file_path,
122 base::File::FLAG_CREATE | base::File::FLAG_READ | 140 base::File::FLAG_CREATE | base::File::FLAG_READ |
123 base::File::FLAG_WRITE); 141 base::File::FLAG_WRITE);
124 ASSERT_TRUE(file.IsValid()); 142 ASSERT_TRUE(file.IsValid());
125 143
126 char data_to_write[] = "test"; 144 char data_to_write[] = "test";
127 const int kTestDataSize = 4; 145 const int kTestDataSize = 4;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 bytes_read = file.Read(0, data_read_2, static_cast<int>(file_size)); 197 bytes_read = file.Read(0, data_read_2, static_cast<int>(file_size));
180 EXPECT_EQ(file_size, bytes_read); 198 EXPECT_EQ(file_size, bytes_read);
181 for (int i = 0; i < kTestDataSize; i++) 199 for (int i = 0; i < kTestDataSize; i++)
182 EXPECT_EQ(data_to_write[i], data_read_2[i]); 200 EXPECT_EQ(data_to_write[i], data_read_2[i]);
183 for (int i = kTestDataSize; i < kOffsetBeyondEndOfFile; i++) 201 for (int i = kTestDataSize; i < kOffsetBeyondEndOfFile; i++)
184 EXPECT_EQ(0, data_read_2[i]); 202 EXPECT_EQ(0, data_read_2[i]);
185 for (int i = kOffsetBeyondEndOfFile; i < file_size; i++) 203 for (int i = kOffsetBeyondEndOfFile; i < file_size; i++)
186 EXPECT_EQ(data_to_write[i - kOffsetBeyondEndOfFile], data_read_2[i]); 204 EXPECT_EQ(data_to_write[i - kOffsetBeyondEndOfFile], data_read_2[i]);
187 } 205 }
188 206
189 TEST(File, Append) { 207 TEST(FileTest, Append) {
190 base::ScopedTempDir temp_dir; 208 base::ScopedTempDir temp_dir;
191 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 209 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
192 FilePath file_path = temp_dir.path().AppendASCII("append_file"); 210 FilePath file_path = temp_dir.path().AppendASCII("append_file");
193 File file(file_path, base::File::FLAG_CREATE | base::File::FLAG_APPEND); 211 File file(file_path, base::File::FLAG_CREATE | base::File::FLAG_APPEND);
194 ASSERT_TRUE(file.IsValid()); 212 ASSERT_TRUE(file.IsValid());
195 213
196 char data_to_write[] = "test"; 214 char data_to_write[] = "test";
197 const int kTestDataSize = 4; 215 const int kTestDataSize = 4;
198 216
199 // Write 0 bytes to the file. 217 // Write 0 bytes to the file.
(...skipping 27 matching lines...) Expand all
227 int bytes_read = file.Read(0, data_read_1, 245 int bytes_read = file.Read(0, data_read_1,
228 kTestDataSize + kAppendDataSize); 246 kTestDataSize + kAppendDataSize);
229 EXPECT_EQ(kTestDataSize + kAppendDataSize, bytes_read); 247 EXPECT_EQ(kTestDataSize + kAppendDataSize, bytes_read);
230 for (int i = 0; i < kTestDataSize; i++) 248 for (int i = 0; i < kTestDataSize; i++)
231 EXPECT_EQ(data_to_write[i], data_read_1[i]); 249 EXPECT_EQ(data_to_write[i], data_read_1[i]);
232 for (int i = 0; i < kAppendDataSize; i++) 250 for (int i = 0; i < kAppendDataSize; i++)
233 EXPECT_EQ(append_data_to_write[i], data_read_1[kTestDataSize + i]); 251 EXPECT_EQ(append_data_to_write[i], data_read_1[kTestDataSize + i]);
234 } 252 }
235 253
236 254
237 TEST(File, Length) { 255 TEST(FileTest, Length) {
238 base::ScopedTempDir temp_dir; 256 base::ScopedTempDir temp_dir;
239 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 257 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
240 FilePath file_path = temp_dir.path().AppendASCII("truncate_file"); 258 FilePath file_path = temp_dir.path().AppendASCII("truncate_file");
241 File file(file_path, 259 File file(file_path,
242 base::File::FLAG_CREATE | base::File::FLAG_READ | 260 base::File::FLAG_CREATE | base::File::FLAG_READ |
243 base::File::FLAG_WRITE); 261 base::File::FLAG_WRITE);
244 ASSERT_TRUE(file.IsValid()); 262 ASSERT_TRUE(file.IsValid());
245 EXPECT_EQ(0, file.GetLength()); 263 EXPECT_EQ(0, file.GetLength());
246 264
247 // Write "test" to the file. 265 // Write "test" to the file.
(...skipping 28 matching lines...) Expand all
276 294
277 // Make sure the file was truncated. 295 // Make sure the file was truncated.
278 bytes_read = file.Read(0, data_read, kTestDataSize); 296 bytes_read = file.Read(0, data_read, kTestDataSize);
279 EXPECT_EQ(file_size, bytes_read); 297 EXPECT_EQ(file_size, bytes_read);
280 for (int i = 0; i < file_size; i++) 298 for (int i = 0; i < file_size; i++)
281 EXPECT_EQ(data_to_write[i], data_read[i]); 299 EXPECT_EQ(data_to_write[i], data_read[i]);
282 } 300 }
283 301
284 // Flakily fails: http://crbug.com/86494 302 // Flakily fails: http://crbug.com/86494
285 #if defined(OS_ANDROID) 303 #if defined(OS_ANDROID)
286 TEST(File, TouchGetInfo) { 304 TEST(FileTest, TouchGetInfo) {
287 #else 305 #else
288 TEST(File, DISABLED_TouchGetInfo) { 306 TEST(FileTest, DISABLED_TouchGetInfo) {
289 #endif 307 #endif
290 base::ScopedTempDir temp_dir; 308 base::ScopedTempDir temp_dir;
291 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 309 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
292 File file(temp_dir.path().AppendASCII("touch_get_info_file"), 310 File file(temp_dir.path().AppendASCII("touch_get_info_file"),
293 base::File::FLAG_CREATE | base::File::FLAG_WRITE | 311 base::File::FLAG_CREATE | base::File::FLAG_WRITE |
294 base::File::FLAG_WRITE_ATTRIBUTES); 312 base::File::FLAG_WRITE_ATTRIBUTES);
295 ASSERT_TRUE(file.IsValid()); 313 ASSERT_TRUE(file.IsValid());
296 314
297 // Get info for a newly created file. 315 // Get info for a newly created file.
298 base::File::Info info; 316 base::File::Info info;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 EXPECT_EQ(info.last_accessed.ToInternalValue(), 360 EXPECT_EQ(info.last_accessed.ToInternalValue(),
343 new_last_accessed.ToInternalValue()); 361 new_last_accessed.ToInternalValue());
344 EXPECT_EQ(info.last_modified.ToInternalValue(), 362 EXPECT_EQ(info.last_modified.ToInternalValue(),
345 new_last_modified.ToInternalValue()); 363 new_last_modified.ToInternalValue());
346 #endif 364 #endif
347 365
348 EXPECT_EQ(info.creation_time.ToInternalValue(), 366 EXPECT_EQ(info.creation_time.ToInternalValue(),
349 creation_time.ToInternalValue()); 367 creation_time.ToInternalValue());
350 } 368 }
351 369
352 TEST(File, ReadAtCurrentPosition) { 370 TEST(FileTest, ReadAtCurrentPosition) {
353 base::ScopedTempDir temp_dir; 371 base::ScopedTempDir temp_dir;
354 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 372 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
355 FilePath file_path = temp_dir.path().AppendASCII("read_at_current_position"); 373 FilePath file_path = temp_dir.path().AppendASCII("read_at_current_position");
356 File file(file_path, 374 File file(file_path,
357 base::File::FLAG_CREATE | base::File::FLAG_READ | 375 base::File::FLAG_CREATE | base::File::FLAG_READ |
358 base::File::FLAG_WRITE); 376 base::File::FLAG_WRITE);
359 EXPECT_TRUE(file.IsValid()); 377 EXPECT_TRUE(file.IsValid());
360 378
361 const char kData[] = "test"; 379 const char kData[] = "test";
362 const int kDataSize = sizeof(kData) - 1; 380 const int kDataSize = sizeof(kData) - 1;
363 EXPECT_EQ(kDataSize, file.Write(0, kData, kDataSize)); 381 EXPECT_EQ(kDataSize, file.Write(0, kData, kDataSize));
364 382
365 EXPECT_EQ(0, file.Seek(base::File::FROM_BEGIN, 0)); 383 EXPECT_EQ(0, file.Seek(base::File::FROM_BEGIN, 0));
366 384
367 char buffer[kDataSize]; 385 char buffer[kDataSize];
368 int first_chunk_size = kDataSize / 2; 386 int first_chunk_size = kDataSize / 2;
369 EXPECT_EQ(first_chunk_size, file.ReadAtCurrentPos(buffer, first_chunk_size)); 387 EXPECT_EQ(first_chunk_size, file.ReadAtCurrentPos(buffer, first_chunk_size));
370 EXPECT_EQ(kDataSize - first_chunk_size, 388 EXPECT_EQ(kDataSize - first_chunk_size,
371 file.ReadAtCurrentPos(buffer + first_chunk_size, 389 file.ReadAtCurrentPos(buffer + first_chunk_size,
372 kDataSize - first_chunk_size)); 390 kDataSize - first_chunk_size));
373 EXPECT_EQ(std::string(buffer, buffer + kDataSize), std::string(kData)); 391 EXPECT_EQ(std::string(buffer, buffer + kDataSize), std::string(kData));
374 } 392 }
375 393
376 TEST(File, WriteAtCurrentPosition) { 394 TEST(FileTest, WriteAtCurrentPosition) {
377 base::ScopedTempDir temp_dir; 395 base::ScopedTempDir temp_dir;
378 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 396 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
379 FilePath file_path = temp_dir.path().AppendASCII("write_at_current_position"); 397 FilePath file_path = temp_dir.path().AppendASCII("write_at_current_position");
380 File file(file_path, 398 File file(file_path,
381 base::File::FLAG_CREATE | base::File::FLAG_READ | 399 base::File::FLAG_CREATE | base::File::FLAG_READ |
382 base::File::FLAG_WRITE); 400 base::File::FLAG_WRITE);
383 EXPECT_TRUE(file.IsValid()); 401 EXPECT_TRUE(file.IsValid());
384 402
385 const char kData[] = "test"; 403 const char kData[] = "test";
386 const int kDataSize = sizeof(kData) - 1; 404 const int kDataSize = sizeof(kData) - 1;
387 405
388 int first_chunk_size = kDataSize / 2; 406 int first_chunk_size = kDataSize / 2;
389 EXPECT_EQ(first_chunk_size, file.WriteAtCurrentPos(kData, first_chunk_size)); 407 EXPECT_EQ(first_chunk_size, file.WriteAtCurrentPos(kData, first_chunk_size));
390 EXPECT_EQ(kDataSize - first_chunk_size, 408 EXPECT_EQ(kDataSize - first_chunk_size,
391 file.WriteAtCurrentPos(kData + first_chunk_size, 409 file.WriteAtCurrentPos(kData + first_chunk_size,
392 kDataSize - first_chunk_size)); 410 kDataSize - first_chunk_size));
393 411
394 char buffer[kDataSize]; 412 char buffer[kDataSize];
395 EXPECT_EQ(kDataSize, file.Read(0, buffer, kDataSize)); 413 EXPECT_EQ(kDataSize, file.Read(0, buffer, kDataSize));
396 EXPECT_EQ(std::string(buffer, buffer + kDataSize), std::string(kData)); 414 EXPECT_EQ(std::string(buffer, buffer + kDataSize), std::string(kData));
397 } 415 }
398 416
399 #if defined(OS_WIN) 417 #if defined(OS_WIN)
400 TEST(File, GetInfoForDirectory) { 418 TEST(FileTest, GetInfoForDirectory) {
401 base::ScopedTempDir temp_dir; 419 base::ScopedTempDir temp_dir;
402 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 420 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
403 FilePath empty_dir = temp_dir.path().Append(FILE_PATH_LITERAL("gpfi_test")); 421 FilePath empty_dir = temp_dir.path().Append(FILE_PATH_LITERAL("gpfi_test"));
404 ASSERT_TRUE(CreateDirectory(empty_dir)); 422 ASSERT_TRUE(CreateDirectory(empty_dir));
405 423
406 base::File dir( 424 base::File dir(
407 ::CreateFile(empty_dir.value().c_str(), 425 ::CreateFile(empty_dir.value().c_str(),
408 FILE_ALL_ACCESS, 426 FILE_ALL_ACCESS,
409 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 427 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
410 NULL, 428 NULL,
411 OPEN_EXISTING, 429 OPEN_EXISTING,
412 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory. 430 FILE_FLAG_BACKUP_SEMANTICS, // Needed to open a directory.
413 NULL)); 431 NULL));
414 ASSERT_TRUE(dir.IsValid()); 432 ASSERT_TRUE(dir.IsValid());
415 433
416 base::File::Info info; 434 base::File::Info info;
417 EXPECT_TRUE(dir.GetInfo(&info)); 435 EXPECT_TRUE(dir.GetInfo(&info));
418 EXPECT_TRUE(info.is_directory); 436 EXPECT_TRUE(info.is_directory);
419 EXPECT_FALSE(info.is_symbolic_link); 437 EXPECT_FALSE(info.is_symbolic_link);
420 EXPECT_EQ(0, info.size); 438 EXPECT_EQ(0, info.size);
421 } 439 }
422 #endif // defined(OS_WIN) 440 #endif // defined(OS_WIN)
OLDNEW
« no previous file with comments | « base/files/file_posix.cc ('k') | net/base/file_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698