memory_file_stream_writer_unittest.cc 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "storage/browser/file_system/memory_file_stream_writer.h"
  5. #include <stdint.h>
  6. #include <memory>
  7. #include <string>
  8. #include "base/bind.h"
  9. #include "base/callback_helpers.h"
  10. #include "base/files/file_util.h"
  11. #include "base/files/scoped_temp_dir.h"
  12. #include "net/base/io_buffer.h"
  13. #include "net/base/net_errors.h"
  14. #include "storage/browser/file_system/file_stream_test_utils.h"
  15. #include "storage/browser/file_system/file_stream_writer_test.h"
  16. #include "storage/browser/file_system/obfuscated_file_util_memory_delegate.h"
  17. namespace storage {
  18. class MemoryFileStreamWriterTest : public FileStreamWriterTest {
  19. public:
  20. MemoryFileStreamWriterTest() = default;
  21. void SetUp() override {
  22. ASSERT_TRUE(file_system_directory_.CreateUniqueTempDir());
  23. file_util_ = std::make_unique<ObfuscatedFileUtilMemoryDelegate>(
  24. file_system_directory_.GetPath());
  25. }
  26. void TearDown() override {
  27. // In memory operations should not have any residue in file system
  28. // directory.
  29. EXPECT_TRUE(base::IsDirectoryEmpty(file_system_directory_.GetPath()));
  30. }
  31. ObfuscatedFileUtilMemoryDelegate* file_util() { return file_util_.get(); }
  32. base::FilePath Path(const std::string& name) {
  33. return file_system_directory_.GetPath().AppendASCII(name);
  34. }
  35. protected:
  36. bool CreateFileWithContent(const std::string& name,
  37. const std::string& data) override {
  38. return file_util()->CreateFileForTesting(Path(name), data) ==
  39. base::File::FILE_OK;
  40. }
  41. std::unique_ptr<FileStreamWriter> CreateWriter(const std::string& name,
  42. int64_t offset) override {
  43. return std::make_unique<MemoryFileStreamWriter>(
  44. base::ThreadTaskRunnerHandle::Get(), file_util_->GetWeakPtr(),
  45. Path(name), offset);
  46. }
  47. bool FilePathExists(const std::string& name) override {
  48. return file_util()->PathExists(Path(name));
  49. }
  50. std::string GetFileContent(const std::string& name) override {
  51. base::FilePath path = Path(name);
  52. base::File::Info info;
  53. EXPECT_EQ(base::File::FILE_OK, file_util()->GetFileInfo(path, &info));
  54. scoped_refptr<net::IOBuffer> content =
  55. base::MakeRefCounted<net::IOBuffer>(static_cast<size_t>(info.size));
  56. EXPECT_EQ(info.size,
  57. file_util_->ReadFile(path, 0, content.get(), info.size));
  58. return std::string(content->data(), info.size);
  59. }
  60. private:
  61. base::ScopedTempDir file_system_directory_;
  62. std::unique_ptr<ObfuscatedFileUtilMemoryDelegate> file_util_;
  63. };
  64. INSTANTIATE_TYPED_TEST_SUITE_P(Memory,
  65. FileStreamWriterTypedTest,
  66. MemoryFileStreamWriterTest);
  67. } // namespace storage