From a6cf8ba983f2b0fbba38a3e9abd25b4344742a03 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 22 Aug 2025 01:19:26 +0200 Subject: [PATCH] Tests: Add unit tests for FileInfo --- tests/src/Base/CMakeLists.txt | 1 + tests/src/Base/FileInfo.cpp | 149 ++++++++++++++++++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 tests/src/Base/FileInfo.cpp diff --git a/tests/src/Base/CMakeLists.txt b/tests/src/Base/CMakeLists.txt index 0bdc34ba5c..b5160f98bf 100644 --- a/tests/src/Base/CMakeLists.txt +++ b/tests/src/Base/CMakeLists.txt @@ -8,6 +8,7 @@ add_executable(Base_tests_run CoordinateSystem.cpp DualNumber.cpp DualQuaternion.cpp + FileInfo.cpp Handle.cpp Matrix.cpp Parameter.cpp diff --git a/tests/src/Base/FileInfo.cpp b/tests/src/Base/FileInfo.cpp new file mode 100644 index 0000000000..b53f9b0c5f --- /dev/null +++ b/tests/src/Base/FileInfo.cpp @@ -0,0 +1,149 @@ +#include +#include +#include +#include + +class FileInfoTest: public ::testing::Test +{ +protected: + FileInfoTest() + { + tmp.setFile(Base::FileInfo::getTempPath() + "fctest"); + tmp.createDirectory(); + + file.setFile(tmp.filePath() + "/test.txt"); + dir.setFile(tmp.filePath() + "/subdir"); + } + + void SetUp() override + { + Base::ofstream str(file, std::ios::out); + str << "Test\n"; + str.close(); + dir.createDirectory(); + } + + void TearDown() override + { + EXPECT_TRUE(file.deleteFile()); + EXPECT_TRUE(dir.deleteDirectory()); + } + +protected: + Base::FileInfo tmp; + Base::FileInfo file; + Base::FileInfo dir; +}; + +TEST_F(FileInfoTest, TestDirectoryPath) +{ + Base::FileInfo relfile("nofile.txt"); + relfile.setFile(relfile.dirPath()); + EXPECT_TRUE(relfile.exists()); +} + +TEST_F(FileInfoTest, TestExistsDirectory) +{ + EXPECT_TRUE(tmp.exists()); +} + +TEST_F(FileInfoTest, TestCreateDirectory) +{ + Base::FileInfo path; + path.setFile(tmp.filePath() + "/subdir1/subdir2"); + EXPECT_FALSE(path.createDirectory()); +} + +TEST_F(FileInfoTest, TestDirectoryContent) +{ + auto content = tmp.getDirectoryContent(); + EXPECT_EQ(content.size(), 2); + EXPECT_TRUE(content[0].exists()); + EXPECT_TRUE(content[1].exists()); +} + +TEST_F(FileInfoTest, TestCheckPermission) +{ + EXPECT_TRUE(file.isReadable()); + EXPECT_TRUE(file.isWritable()); +} + +TEST_F(FileInfoTest, TestCheckNoPermission) +{ + std::string path = tmp.filePath(); + Base::FileInfo nofile(path + "/nofile"); + EXPECT_FALSE(nofile.isReadable()); + EXPECT_FALSE(nofile.isWritable()); +} + +TEST_F(FileInfoTest, TestSetPermission) +{ + file.setPermissions(Base::FileInfo::ReadOnly); + EXPECT_TRUE(file.isReadable()); + EXPECT_FALSE(file.isWritable()); + + file.setPermissions(Base::FileInfo::WriteOnly); + EXPECT_FALSE(file.isReadable()); + EXPECT_TRUE(file.isWritable()); + + file.setPermissions(Base::FileInfo::ReadWrite); + EXPECT_TRUE(file.isReadable()); + EXPECT_TRUE(file.isWritable()); +} + +TEST_F(FileInfoTest, TestCheckFile) +{ + EXPECT_TRUE(file.isFile()); + EXPECT_FALSE(dir.isFile()); + + std::string path = tmp.filePath(); + Base::FileInfo file2(path + "/file2"); + EXPECT_TRUE(file2.isFile()); +} + +TEST_F(FileInfoTest, TestCheckDirectory) +{ + EXPECT_FALSE(file.isDir()); + EXPECT_TRUE(dir.isDir()); + + std::string path = tmp.filePath(); + Base::FileInfo file2(path + "/file2"); + EXPECT_FALSE(file2.isDir()); +} + +TEST_F(FileInfoTest, TestSize) +{ + EXPECT_EQ(file.size(), 5); +} + +TEST_F(FileInfoTest, TestLastModified) +{ + EXPECT_FALSE(file.lastModified().isNull()); + + std::string path = tmp.filePath(); + Base::FileInfo nofile(path + "/nofile.txt"); + EXPECT_TRUE(nofile.lastModified().isNull()); +} + +TEST_F(FileInfoTest, TestDeleteFile) +{ + std::string path = tmp.filePath(); + Base::FileInfo file2(path + "/nofile.txt"); + EXPECT_FALSE(file2.deleteFile()); +} + +TEST_F(FileInfoTest, TestRenameFile) +{ + std::string path = tmp.filePath(); + Base::FileInfo file2(path + "/file2"); + EXPECT_FALSE(file2.renameFile((path + "/file3").c_str())); + EXPECT_TRUE(file.renameFile((path + "/file2").c_str())); +} + +TEST_F(FileInfoTest, TestCopyFile) +{ + std::string path = tmp.filePath(); + Base::FileInfo copy(path + "/copy.txt"); + EXPECT_TRUE(file.copyTo(copy.filePath().c_str())); + EXPECT_TRUE(copy.deleteFile()); +}