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:
Andreas Stallinger
2014-05-13 17:24:53 +02:00
parent 95e51b1780
commit ac55261af6
19 changed files with 310 additions and 8 deletions
+3 -1
View File
@@ -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
+43
View File
@@ -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));
}
+18
View File
@@ -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
+1
View File
@@ -3,6 +3,7 @@ add_files(
ConfigManagerTestSuite.h
CxxParserTestSuite.h
FileSystemTestSuite.h
LogManagerTestSuite.h
MessageQueueTestSuite.h
TestSuiteFixture.cpp
+65
View File
@@ -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);
}
};