Add unit test for File::CreateFullPath().

This commit is contained in:
Admiral H. Curtiss 2023-02-15 02:47:26 +01:00
parent 0758e00cfe
commit c36994a90d
No known key found for this signature in database
GPG Key ID: F051B4C4044F33FB

View File

@ -100,3 +100,50 @@ TEST_F(FileUtilTest, DeleteDir)
DeleteDirShouldReturnTrueForInvalidPath(m_invalid_path, behavior);
}
}
TEST_F(FileUtilTest, CreateFullPath)
{
ASSERT_TRUE(!m_directory_path.ends_with('/'));
File::CreateDir(m_directory_path);
// should try to create the directory at m_directory_path, which already exists
EXPECT_TRUE(File::IsDirectory(m_directory_path));
EXPECT_TRUE(File::CreateFullPath(m_directory_path + "/"));
// should create the directory (one level)
std::string p1 = m_directory_path + "/p1";
EXPECT_TRUE(!File::Exists(p1));
EXPECT_TRUE(File::CreateFullPath(p1 + "/"));
EXPECT_TRUE(File::IsDirectory(p1));
// should create the directories (multiple levels)
std::string p2 = m_directory_path + "/p2";
std::string p2a = m_directory_path + "/p2/a";
std::string p2b = m_directory_path + "/p2/a/b";
std::string p2c = m_directory_path + "/p2/a/b/c";
EXPECT_TRUE(!File::Exists(p2));
EXPECT_TRUE(!File::Exists(p2a));
EXPECT_TRUE(!File::Exists(p2b));
EXPECT_TRUE(!File::Exists(p2c));
EXPECT_TRUE(File::CreateFullPath(p2c + "/"));
EXPECT_TRUE(File::IsDirectory(p2));
EXPECT_TRUE(File::IsDirectory(p2a));
EXPECT_TRUE(File::IsDirectory(p2b));
EXPECT_TRUE(File::IsDirectory(p2c));
// if the given path ends in a file, the file should be ignored
std::string p3 = m_directory_path + "/p3";
std::string p3file = m_directory_path + "/p3/test.bin";
EXPECT_TRUE(!File::Exists(p3));
EXPECT_TRUE(!File::Exists(p3file));
EXPECT_TRUE(File::CreateFullPath(p3file));
EXPECT_TRUE(File::IsDirectory(p3));
EXPECT_TRUE(!File::Exists(p3file));
// if we try to create a directory where a file already exists, we expect it to fail and leave the
// file alone
EXPECT_TRUE(File::CreateEmptyFile(p3file));
EXPECT_TRUE(File::IsFile(p3file));
EXPECT_FALSE(File::CreateFullPath(p3file + "/"));
EXPECT_TRUE(File::IsFile(p3file));
}