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 396ab72fbcb91a71795704747d130f6f0fb569cb..4f2b4dbb1c89c2c5f3566004bfde449a64cfc127 100644 |
| --- a/base/files/memory_mapped_file_unittest.cc |
| +++ b/base/files/memory_mapped_file_unittest.cc |
| @@ -170,6 +170,74 @@ TEST_F(MemoryMappedFileTest, MapLargePartialRegionInTheMiddle) { |
| ASSERT_TRUE(CheckBufferContents(map.data(), kPartialSize, kOffset)); |
| } |
| +TEST_F(MemoryMappedFileTest, WriteableFile) { |
| + const size_t kFileSize = 127; |
| + CreateTemporaryTestFile(kFileSize); |
| + |
| + { |
| + MemoryMappedFile map; |
| + map.Initialize(temp_file_path(), MemoryMappedFile::READ_WRITE); |
| + ASSERT_EQ(kFileSize, map.length()); |
| + ASSERT_TRUE(map.data() != NULL); |
|
danakj
2016/04/25 21:26:17
nullptr
bcwhite
2016/04/26 00:08:46
Done here and elsewhere in file.
|
| + EXPECT_TRUE(map.IsValid()); |
| + ASSERT_TRUE(CheckBufferContents(map.data(), kFileSize, 0)); |
| + |
| + uint8_t* bytes = map.data(); |
| + bytes[0] = 'B'; |
| + bytes[1] = 'a'; |
| + bytes[2] = 'r'; |
| + bytes[kFileSize - 1] = '!'; |
| + EXPECT_FALSE(CheckBufferContents(map.data(), kFileSize, 0)); |
| + EXPECT_TRUE(CheckBufferContents(map.data() + 3, kFileSize - 4, 3)); |
| + } |
| + |
| + int64_t file_size; |
| + ASSERT_TRUE(GetFileSize(temp_file_path(), &file_size)); |
| + EXPECT_EQ(static_cast<int64_t>(kFileSize), file_size); |
| + |
| + std::string contents; |
| + ASSERT_TRUE(ReadFileToString(temp_file_path(), &contents)); |
| + EXPECT_EQ("Bar", contents.substr(0, 3)); |
| + EXPECT_EQ("!", contents.substr(kFileSize - 1, 1)); |
| +} |
| + |
| +TEST_F(MemoryMappedFileTest, ExtendableFile) { |
| + const size_t kFileSize = 127; |
| + const size_t kFileExtend = 100; |
| + CreateTemporaryTestFile(kFileSize); |
| + |
| + { |
| + File file(temp_file_path(), |
| + File::FLAG_OPEN | File::FLAG_READ | File::FLAG_WRITE); |
| + MemoryMappedFile::Region region = {0, kFileSize + kFileExtend}; |
| + MemoryMappedFile map; |
| + map.Initialize(std::move(file), region, |
| + MemoryMappedFile::READ_WRITE_EXTEND); |
| + EXPECT_EQ(kFileSize + kFileExtend, map.length()); |
| + ASSERT_TRUE(map.data() != NULL); |
|
danakj
2016/04/25 21:26:17
nullptr
bcwhite
2016/04/26 00:08:46
Done.
|
| + EXPECT_TRUE(map.IsValid()); |
| + ASSERT_TRUE(CheckBufferContents(map.data(), kFileSize, 0)); |
| + |
| + uint8_t* bytes = map.data(); |
| + EXPECT_EQ(0, bytes[kFileSize + 0]); |
| + EXPECT_EQ(0, bytes[kFileSize + 1]); |
| + EXPECT_EQ(0, bytes[kFileSize + 2]); |
| + bytes[kFileSize + 0] = 'B'; |
| + bytes[kFileSize + 1] = 'A'; |
| + bytes[kFileSize + 2] = 'Z'; |
| + EXPECT_TRUE(CheckBufferContents(map.data(), kFileSize, 0)); |
| + } |
| + |
| + int64_t file_size; |
| + ASSERT_TRUE(GetFileSize(temp_file_path(), &file_size)); |
| + EXPECT_LE(static_cast<int64_t>(kFileSize + 3), file_size); |
| + EXPECT_GE(static_cast<int64_t>(kFileSize + kFileExtend), file_size); |
| + |
| + std::string contents; |
| + ASSERT_TRUE(ReadFileToString(temp_file_path(), &contents)); |
| + EXPECT_EQ("BAZ", contents.substr(kFileSize, 3)); |
| +} |
| + |
| } // namespace |
| } // namespace base |