150 lines
3.4 KiB
C++
150 lines
3.4 KiB
C++
#include <gtest/gtest.h>
|
|
#include <Base/FileInfo.h>
|
|
#include <Base/Stream.h>
|
|
#include <Base/TimeInfo.h>
|
|
|
|
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());
|
|
}
|