#include #include #include #include #include #include "FileSystem.h" #include "utility.h" class FileSystemTestSuite: public CxxTest::TestSuite { public: void test_find_cpp_files() { std::vector cppFiles = utility::convert( FileSystem::getFilePathsFromDirectory(FilePath(L"data/FileSystemTestSuite"), { L".cpp" }), [](const FilePath& filePath){ return filePath.wstr(); } ); TS_ASSERT_EQUALS(cppFiles.size(), 4); TS_ASSERT(utility::containsElement(cppFiles, L"data/FileSystemTestSuite/main.cpp")); TS_ASSERT(utility::containsElement(cppFiles, L"data/FileSystemTestSuite/Settings/sample.cpp")); TS_ASSERT(utility::containsElement(cppFiles, L"data/FileSystemTestSuite/src/main.cpp")); TS_ASSERT(utility::containsElement(cppFiles, L"data/FileSystemTestSuite/src/test.cpp")); } void test_find_h_files() { std::vector headerFiles = utility::convert( FileSystem::getFilePathsFromDirectory(FilePath(L"data/FileSystemTestSuite"), { L".h" }), [](const FilePath& filePath){ return filePath.wstr(); } ); TS_ASSERT_EQUALS(headerFiles.size(), 3); TS_ASSERT(utility::containsElement(headerFiles, L"data/FileSystemTestSuite/tictactoe.h")); TS_ASSERT(utility::containsElement(headerFiles, L"data/FileSystemTestSuite/Settings/player.h")); TS_ASSERT(utility::containsElement(headerFiles, L"data/FileSystemTestSuite/src/test.h")); } void test_find_all_source_files() { std::vector sourceFiles = utility::convert( FileSystem::getFilePathsFromDirectory(FilePath(L"data/FileSystemTestSuite"), { L".h", L".hpp", L".cpp" }), [](const FilePath& filePath){ return filePath.wstr(); } ); TS_ASSERT_EQUALS(sourceFiles.size(), 8); } void test_find_file_infos() { #ifndef _WIN32 std::vector directoryPaths; directoryPaths.push_back(FilePath(L"./data/FileSystemTestSuite/src")); std::vector files = FileSystem::getFileInfosFromPaths(directoryPaths, { L".h", L".hpp", L".cpp" }, false); TS_ASSERT_EQUALS(files.size(), 2); TS_ASSERT(isInFileInfos(files, L"./data/FileSystemTestSuite/src/test.cpp")); TS_ASSERT(isInFileInfos(files, L"./data/FileSystemTestSuite/src/test.h")); #endif } void test_find_file_infos_with_symlinks() { #ifndef _WIN32 std::vector directoryPaths; directoryPaths.push_back(FilePath(L"./data/FileSystemTestSuite/src")); std::vector files = FileSystem::getFileInfosFromPaths(directoryPaths, { L".h", L".hpp", L".cpp" }, true); TS_ASSERT_EQUALS(files.size(), 5); TS_ASSERT(isInFileInfos(files, L"./data/FileSystemTestSuite/src/Settings/player.h", L"./data/FileSystemTestSuite/player.h" )); TS_ASSERT(isInFileInfos(files, L"./data/FileSystemTestSuite/src/Settings/sample.cpp", L"./data/FileSystemTestSuite/sample.cpp" )); TS_ASSERT(isInFileInfos(files, L"./data/FileSystemTestSuite/src/main.cpp", L"./data/FileSystemTestSuite/src/Settings/src/main.cpp" )); TS_ASSERT(isInFileInfos(files, L"./data/FileSystemTestSuite/src/test.cpp", L"./data/FileSystemTestSuite/src/Settings/src/test.cpp" )); TS_ASSERT(isInFileInfos(files, L"./data/FileSystemTestSuite/src/test.h", L"./data/FileSystemTestSuite/src/Settings/src/test.h" )); #endif } void test_find_symlinked_directories() { #ifndef _WIN32 std::vector directoryPaths; directoryPaths.push_back(FilePath("./data/FileSystemTestSuite/src")); std::set dirs = FileSystem::getSymLinkedDirectories(directoryPaths); TS_ASSERT_EQUALS(dirs.size(), 2); #endif } private: bool isInFiles(const std::set& files, const FilePath& filename) { return std::end(files) != files.find(filename); } bool isInFileInfos(const std::vector& infos, const std::wstring& filename) { for (const FileInfo& info : infos) { if (info.path.wstr() == filename) { return true; } } return false; } bool isInFileInfos(const std::vector& infos, const std::wstring& filename, const std::wstring& filename2) { for (const FileInfo& info : infos) { if (info.path.wstr() == filename || info.path.wstr() == filename2) { return true; } } return false; } };