From c36994a90d2ac9fe15360e1d2e8764aba784c4e8 Mon Sep 17 00:00:00 2001 From: "Admiral H. Curtiss" Date: Wed, 15 Feb 2023 02:47:26 +0100 Subject: [PATCH] Add unit test for File::CreateFullPath(). --- Source/UnitTests/Common/FileUtilTest.cpp | 47 ++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/Source/UnitTests/Common/FileUtilTest.cpp b/Source/UnitTests/Common/FileUtilTest.cpp index 8570c347b4..d361f656f3 100644 --- a/Source/UnitTests/Common/FileUtilTest.cpp +++ b/Source/UnitTests/Common/FileUtilTest.cpp @@ -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)); +}