2016-05-20 03:09:22 +02:00
|
|
|
#include <GameConfig.hpp>
|
2017-02-17 01:17:50 +01:00
|
|
|
|
|
|
|
#include <boost/filesystem.hpp>
|
2016-09-09 22:13:22 +02:00
|
|
|
#include <boost/test/unit_test.hpp>
|
2017-02-17 01:17:50 +01:00
|
|
|
|
2016-05-20 03:09:22 +02:00
|
|
|
#include <fstream>
|
2017-02-17 01:17:50 +01:00
|
|
|
#include <map>
|
|
|
|
|
|
|
|
namespace fs = boost::filesystem;
|
|
|
|
|
|
|
|
typedef std::map<std::string, std::map<std::string, std::string>> config_t;
|
|
|
|
|
|
|
|
fs::path getRandomFilePath() {
|
|
|
|
return fs::unique_path(fs::temp_directory_path() /= "openrw_test_%%%%%%%%%%%%%%%%");
|
|
|
|
}
|
|
|
|
|
|
|
|
config_t getValidConfig() {
|
|
|
|
config_t result;
|
|
|
|
result["game"]["\tpath "] = "\t/dev/test \t \r\n";
|
|
|
|
result["game"]["language\t "] = " american ;american english french german italian spanish.";
|
|
|
|
result["input"]["invert_y"] = "1 #values != 0 enable input inversion. Optional.";
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
std::ostream &writeConfig(std::ostream &os, const config_t &config) {
|
|
|
|
for (auto §ion : config) {
|
|
|
|
os << "[" << section.first << "]" << "\n";
|
|
|
|
for (auto &keyValue : section.second) {
|
|
|
|
os << keyValue.first << "=" << keyValue.second << "\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return os;
|
|
|
|
}
|
|
|
|
|
|
|
|
#include <iostream>
|
2016-05-20 03:09:22 +02:00
|
|
|
|
|
|
|
BOOST_AUTO_TEST_SUITE(ConfigTests)
|
|
|
|
|
2017-02-17 01:17:50 +01:00
|
|
|
BOOST_AUTO_TEST_CASE(test_config_valid) {
|
|
|
|
auto cfg = getValidConfig();
|
|
|
|
auto configPath = getRandomFilePath();
|
2017-01-15 03:16:46 +01:00
|
|
|
|
2017-02-17 01:17:50 +01:00
|
|
|
std::ofstream ofs(configPath.string());
|
|
|
|
writeConfig(ofs, cfg);
|
|
|
|
ofs.close();
|
2016-05-20 03:09:22 +02:00
|
|
|
|
2017-02-17 01:17:50 +01:00
|
|
|
GameConfig config(configPath.filename().string(),
|
|
|
|
configPath.parent_path().string());
|
2016-05-20 03:09:22 +02:00
|
|
|
|
2016-09-09 22:13:22 +02:00
|
|
|
BOOST_CHECK(config.isValid());
|
2016-05-20 03:09:22 +02:00
|
|
|
|
2016-09-09 22:13:22 +02:00
|
|
|
BOOST_CHECK_EQUAL(config.getGameDataPath(), "/dev/test");
|
2017-01-06 22:45:25 +01:00
|
|
|
BOOST_CHECK_EQUAL(config.getGameLanguage(), "american");
|
2017-02-17 01:17:50 +01:00
|
|
|
BOOST_CHECK_EQUAL(config.getInputInvertY(), true);
|
|
|
|
}
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(test_config_valid_modified) {
|
|
|
|
auto cfg = getValidConfig();
|
|
|
|
cfg["input"]["invert_y"] = "0";
|
|
|
|
auto configPath = getRandomFilePath();
|
|
|
|
|
|
|
|
std::ofstream ofs(configPath.string());
|
|
|
|
writeConfig(ofs, cfg);
|
|
|
|
ofs.close();
|
|
|
|
|
|
|
|
GameConfig config(configPath.filename().string(),
|
|
|
|
configPath.parent_path().string());
|
|
|
|
|
|
|
|
BOOST_CHECK(config.isValid());
|
|
|
|
|
2017-01-15 03:16:46 +01:00
|
|
|
BOOST_CHECK_EQUAL(config.getInputInvertY(), false);
|
2016-05-20 03:09:22 +02:00
|
|
|
}
|
|
|
|
|
2017-02-17 01:17:50 +01:00
|
|
|
BOOST_AUTO_TEST_CASE(test_config_invalid_duplicate) {
|
|
|
|
auto cfg = getValidConfig();
|
|
|
|
cfg["input"]["invert_y "] = "0";
|
|
|
|
auto configPath = getRandomFilePath();
|
|
|
|
|
|
|
|
std::ofstream ofs(configPath.string());
|
|
|
|
writeConfig(ofs, cfg);
|
|
|
|
ofs.close();
|
|
|
|
|
|
|
|
GameConfig config(configPath.filename().string(),
|
|
|
|
configPath.parent_path().string());
|
|
|
|
|
|
|
|
BOOST_CHECK(!config.isValid());
|
|
|
|
}
|
|
|
|
|
|
|
|
BOOST_AUTO_TEST_CASE(test_config_invalid_empty) {
|
|
|
|
config_t cfg;
|
|
|
|
auto configPath = getRandomFilePath();
|
|
|
|
std::cout << configPath.string() << "\n";
|
|
|
|
|
|
|
|
std::ofstream ofs(configPath.string());
|
|
|
|
writeConfig(ofs, cfg);
|
|
|
|
ofs.close();
|
|
|
|
|
|
|
|
GameConfig config(configPath.filename().string(),
|
|
|
|
configPath.parent_path().string());
|
|
|
|
|
|
|
|
BOOST_CHECK(!config.isValid());
|
|
|
|
}
|
2017-01-06 22:45:25 +01:00
|
|
|
|
2016-05-20 03:09:22 +02:00
|
|
|
BOOST_AUTO_TEST_SUITE_END()
|