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 |