Flutter Engine
file_unittest.cc
Go to the documentation of this file.
1 // Copyright 2013 The Flutter 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 
5 #include "filesystem/file.h"
6 
7 #include <fcntl.h>
8 
9 #include "filesystem/path.h"
10 #include "filesystem/scoped_temp_dir.h"
11 #include "gtest/gtest.h"
12 
13 namespace filesystem {
14 namespace {
15 
16 TEST(File, GetFileSize) {
17  ScopedTempDir dir;
18  std::string path;
19 
20  ASSERT_TRUE(dir.NewTempFile(&path));
21 
22  uint64_t size;
23  EXPECT_TRUE(GetFileSize(path, &size));
24  EXPECT_EQ(0u, size);
25 
26  std::string content = "Hello World";
27  ASSERT_TRUE(WriteFile(path, content.data(), content.size()));
28  EXPECT_TRUE(GetFileSize(path, &size));
29  EXPECT_EQ(content.size(), size);
30 }
31 
32 TEST(File, WriteFileInTwoPhases) {
33  ScopedTempDir dir;
34  std::string path = dir.path() + "/destination";
35 
36  std::string content = "Hello World";
37  ASSERT_TRUE(WriteFileInTwoPhases(path, content, dir.path()));
38  std::string read_content;
39  ASSERT_TRUE(ReadFileToString(path, &read_content));
40  EXPECT_EQ(read_content, content);
41 }
42 
43 #if defined(OS_LINUX) || defined(OS_FUCHSIA)
44 TEST(File, IsFileAt) {
45  ScopedTempDir dir;
46  std::string path;
47 
48  ASSERT_TRUE(dir.NewTempFile(&path));
49 
50  fxl::UniqueFD dirfd(open(dir.path().c_str(), O_RDONLY));
51  ASSERT_TRUE(dirfd.get() != -1);
52  EXPECT_TRUE(IsFileAt(dirfd.get(), GetBaseName(path)));
53 }
54 #endif
55 
56 } // namespace
57 } // namespace filesystem
DEF_SWITCHES_START snapshot asset path
Definition: switches.h:32
bool WriteFile(const std::string &path, const char *data, ssize_t size)
Definition: files.cc:69
constexpr std::size_t size(T(&array)[N])
Definition: size.h:13
UniqueObject< int, internal::os_unix::UniqueFDTraits > UniqueFD
Definition: unique_fd.h:61
std::string GetBaseName(const std::string &path)
Definition: path_posix.cc:169
TEST(Directory, CreateDirectory)
bool ReadFileToString(const std::string &path, std::string *result)
Definition: file.cc:85