Chromium Code Reviews| Index: base/files/memory_mapped_file_unittest.cc |
| diff --git a/base/files/memory_mapped_file_unittest.cc b/base/files/memory_mapped_file_unittest.cc |
| index 6627d4044287d0f81ddab3cb9b0389399e43da74..ab9fc4ad91d65b13a830e25cef87fecba78fff14 100644 |
| --- a/base/files/memory_mapped_file_unittest.cc |
| +++ b/base/files/memory_mapped_file_unittest.cc |
| @@ -161,6 +161,63 @@ TEST_F(MemoryMappedFileTest, MapLargePartialRegionInTheMiddle) { |
| ASSERT_TRUE(CheckBufferContents(map.data(), kPartialSize, kOffset)); |
| } |
| +TEST_F(MemoryMappedFileTest, MapWholeFileWithWrite) { |
| + const size_t kFileSize = 68 * 1024; |
| + CreateTemporaryTestFile(kFileSize); |
| + MemoryMappedFile map; |
| + map.Initialize(File(temp_file_path(), File::FLAG_OPEN | |
| + File::FLAG_READ | |
| + File::FLAG_WRITE), true); |
| + ASSERT_EQ(kFileSize, map.length()); |
| + ASSERT_TRUE(map.data() != NULL); |
| + EXPECT_TRUE(map.IsValid()); |
| + ASSERT_TRUE(CheckBufferContents(map.data(), kFileSize, 0)); |
| + |
| + const char* test_string = "TEST_STRING"; |
|
wuchengli
2014/09/01 06:57:15
Can we use CreateTestBuffer with a non-0 offset?
henryhsu
2014/09/01 07:49:49
Done.
|
| + memcpy(map.data(), test_string, strlen(test_string)); |
| + map.CloseHandles(); |
| + |
| + MemoryMappedFile read_map; |
| + read_map.Initialize(File(temp_file_path(), File::FLAG_OPEN | |
| + File::FLAG_READ)); |
| + ASSERT_EQ(kFileSize, read_map.length()); |
| + ASSERT_TRUE(read_map.data() != NULL); |
| + EXPECT_TRUE(read_map.IsValid()); |
| + ASSERT_TRUE(memcmp(read_map.data(), test_string, strlen(test_string)) == 0); |
|
wuchengli
2014/09/01 06:57:15
Use CheckBufferContents with a non-0 offset?
henryhsu
2014/09/01 07:49:49
Done.
|
| +} |
| + |
| +TEST_F(MemoryMappedFileTest, MapLargePartialRegionInTheMiddleWithWrite) { |
| + const size_t kFileSize = 157 * 1024; |
| + const size_t kOffset = 1024 * 5 + 32; |
| + const size_t kPartialSize = 16 * 1024 - 32; |
| + |
| + CreateTemporaryTestFile(kFileSize); |
| + MemoryMappedFile map; |
| + |
| + File file(temp_file_path(), File::FLAG_OPEN | |
| + File::FLAG_READ | |
| + File::FLAG_WRITE); |
| + map.Initialize( |
| + file.Pass(), MemoryMappedFile::Region(kOffset, kPartialSize), true); |
| + ASSERT_EQ(kPartialSize, map.length()); |
| + ASSERT_TRUE(map.data() != NULL); |
| + EXPECT_TRUE(map.IsValid()); |
| + ASSERT_TRUE(CheckBufferContents(map.data(), kPartialSize, kOffset)); |
| + |
| + const char* test_string = "TEST_STRING"; |
| + memcpy(map.data(), test_string, strlen(test_string)); |
| + map.CloseHandles(); |
| + |
| + MemoryMappedFile read_map; |
| + read_map.Initialize(File(temp_file_path(), File::FLAG_OPEN | |
| + File::FLAG_READ)); |
| + ASSERT_EQ(kFileSize, read_map.length()); |
| + ASSERT_TRUE(read_map.data() != NULL); |
| + EXPECT_TRUE(read_map.IsValid()); |
| + ASSERT_TRUE( |
| + memcmp(read_map.data() + kOffset, test_string, strlen(test_string)) == 0); |
|
wuchengli
2014/09/01 06:57:15
Use CheckBufferContents with a non-0 offset?
henryhsu
2014/09/01 07:49:49
Done.
|
| +} |
| + |
| } // namespace |
| } // namespace base |