utility: boost integration
Added boost components: filesystem and system to the project environment varibable BOOST_155_DIR targeting the boost_1_55_0 folder is needed review id = 14 fortune cookie message = when you speak honestly and openly, others truly listen to you
This commit is contained in:
@@ -98,7 +98,7 @@ add_files(
|
||||
utility/logging/LogManagerImplementation.cpp
|
||||
utility/logging/LogManagerImplementation.h
|
||||
utility/logging/LogMessage.h
|
||||
|
||||
|
||||
utility/math/Color.h
|
||||
utility/math/Vector2.h
|
||||
utility/math/Vector4.h
|
||||
@@ -112,6 +112,8 @@ add_files(
|
||||
|
||||
utility/ConfigManager.cpp
|
||||
utility/ConfigManager.h
|
||||
utility/FileSystem.cpp
|
||||
utility/FileSystem.h
|
||||
utility/Vector.h
|
||||
|
||||
Application.cpp
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
#include "utility/FileSystem.h"
|
||||
|
||||
#include "boost/filesystem.hpp"
|
||||
#include "utility/logging/logging.h"
|
||||
|
||||
std::vector<std::string> FileSystem::getSourceFilesFromDirectory(
|
||||
const std::string& path, const std::vector<std::string>& extensions
|
||||
)
|
||||
{
|
||||
std::vector<std::string> files;
|
||||
if (boost::filesystem::is_directory(path))
|
||||
{
|
||||
boost::filesystem::recursive_directory_iterator it(path);
|
||||
boost::filesystem::recursive_directory_iterator endit;
|
||||
while(it != endit)
|
||||
{
|
||||
if (boost::filesystem::is_regular_file(*it) && isValidExtension(it->path().string(), extensions))
|
||||
{
|
||||
files.push_back(it->path().string());
|
||||
}
|
||||
++it;
|
||||
}
|
||||
}
|
||||
return files;
|
||||
}
|
||||
|
||||
bool FileSystem::isValidExtension(const std::string& filepath, const std::vector<std::string>& extensions)
|
||||
{
|
||||
boost::filesystem::path path(filepath);
|
||||
for(std::string extension : extensions)
|
||||
{
|
||||
if(path.extension() == extension)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool FileSystem::exists(const std::string& path)
|
||||
{
|
||||
return boost::filesystem::exists(boost::filesystem::path(path));
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
#ifndef FILE_SYSTEM_H
|
||||
#define FILE_SYSTEM_H
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class FileSystem
|
||||
{
|
||||
public:
|
||||
static std::vector<std::string> getSourceFilesFromDirectory(
|
||||
const std::string& path, const std::vector<std::string>& extensions
|
||||
);
|
||||
static bool exists(const std::string& path);
|
||||
private:
|
||||
static bool isValidExtension(const std::string& filepath, const std::vector<std::string>& extensions);
|
||||
};
|
||||
|
||||
#endif // FILE_SYSTEM_H
|
||||
@@ -3,6 +3,7 @@ add_files(
|
||||
|
||||
ConfigManagerTestSuite.h
|
||||
CxxParserTestSuite.h
|
||||
FileSystemTestSuite.h
|
||||
LogManagerTestSuite.h
|
||||
MessageQueueTestSuite.h
|
||||
TestSuiteFixture.cpp
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
#include "cxxtest/TestSuite.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "utility/FileSystem.h"
|
||||
|
||||
class FileSystemTestSuite : public CxxTest::TestSuite
|
||||
{
|
||||
public:
|
||||
void test_find_cpp_files()
|
||||
{
|
||||
std::vector<std::string> extensions;
|
||||
extensions.push_back(".cpp");
|
||||
|
||||
std::vector<std::string> cppFiles = FileSystem::getSourceFilesFromDirectory("data/src",extensions);
|
||||
|
||||
TS_ASSERT_EQUALS(cppFiles.size(), 2)
|
||||
TS_ASSERT(isInVector(cppFiles, "data/src/main.cpp"))
|
||||
TS_ASSERT(isInVector(cppFiles, "data/src/Settings/sample.cpp"))
|
||||
}
|
||||
|
||||
void test_find_h_files()
|
||||
{
|
||||
std::vector<std::string> extensions;
|
||||
extensions.push_back(".h");
|
||||
|
||||
std::vector<std::string> headerFiles = FileSystem::getSourceFilesFromDirectory("data/src",extensions);
|
||||
|
||||
TS_ASSERT_EQUALS(headerFiles.size(), 2)
|
||||
TS_ASSERT(isInVector(headerFiles, "data/src/tictactoe.h"))
|
||||
TS_ASSERT(isInVector(headerFiles, "data/src/Settings/player.h"))
|
||||
}
|
||||
|
||||
void test_find_all_source_files()
|
||||
{
|
||||
std::vector<std::string> extensions;
|
||||
extensions.push_back(".h");
|
||||
extensions.push_back(".hpp");
|
||||
extensions.push_back(".cpp");
|
||||
|
||||
std::vector<std::string> sourceFiles = FileSystem::getSourceFilesFromDirectory("data/src",extensions);
|
||||
|
||||
TS_ASSERT_EQUALS(sourceFiles.size(), 5)
|
||||
}
|
||||
|
||||
void test_filesystem_finds_existing_files()
|
||||
{
|
||||
TS_ASSERT(FileSystem::exists("data/src"))
|
||||
TS_ASSERT(FileSystem::exists("data/src/tictactoe.h"));
|
||||
}
|
||||
|
||||
void test_filesystem_does_not_find_non_existing_files()
|
||||
{
|
||||
TS_ASSERT(!FileSystem::exists("data/foo"));
|
||||
TS_ASSERT(!FileSystem::exists("data/src/blabla.h"));
|
||||
}
|
||||
|
||||
private:
|
||||
bool isInVector(const std::vector<std::string>& files, const std::string filename)
|
||||
{
|
||||
return std::end(files) != std::find(std::begin(files), std::end(files), filename);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user