// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "components/zucchini/mapped_file.h" #include #include "base/files/file.h" #include "base/files/file_path.h" #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" #include "testing/gtest/include/gtest/gtest.h" namespace zucchini { class MappedFileWriterTest : public testing::Test { protected: MappedFileWriterTest() = default; void SetUp() override { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); file_path_ = temp_dir_.GetPath().AppendASCII("test-file"); } base::FilePath file_path_; private: base::ScopedTempDir temp_dir_; }; TEST_F(MappedFileWriterTest, Keep) { EXPECT_FALSE(base::PathExists(file_path_)); { using base::File; File file(file_path_, File::FLAG_CREATE_ALWAYS | File::FLAG_READ | File::FLAG_WRITE | File::FLAG_WIN_SHARE_DELETE | File::FLAG_CAN_DELETE_ON_CLOSE); MappedFileWriter file_writer(file_path_, std::move(file), 10); EXPECT_FALSE(file_writer.HasError()); EXPECT_TRUE(file_writer.Keep()); EXPECT_FALSE(file_writer.HasError()); EXPECT_TRUE(file_writer.error().empty()); } EXPECT_TRUE(base::PathExists(file_path_)); } TEST_F(MappedFileWriterTest, DeleteOnClose) { EXPECT_FALSE(base::PathExists(file_path_)); { using base::File; File file(file_path_, File::FLAG_CREATE_ALWAYS | File::FLAG_READ | File::FLAG_WRITE | File::FLAG_WIN_SHARE_DELETE | File::FLAG_CAN_DELETE_ON_CLOSE); MappedFileWriter file_writer(file_path_, std::move(file), 10); EXPECT_FALSE(file_writer.HasError()); EXPECT_TRUE(file_writer.error().empty()); } EXPECT_FALSE(base::PathExists(file_path_)); } } // namespace zucchini