Я прямо сейчас реализую библиотеку для экспорта данных в различные форматы с множеством настроек. Я также использую Boost.Test, но, похоже, нет функции для проверки содержимого файла.
Для моих целей должно быть достаточно проверить, содержит ли имеющийся файл заданное регулярное выражение. Я действительно ищу очень простой макрос, как показано ниже.
#define BOOST_TEST_MODULE ExportTest
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_SUITE(CsvExport)
BOOST_AUTO_TEST_CASE(SimpleTest) {
//
// ... Code writes Simple.csv to harddisk
//
//
//
std::string regExpr= ... // Arbitrary regular expression
BOOST_TEST_FILE("Simple.csv", regExpr)
}
BOOST_AUTO_TEST_SUITE_END();
Есть ли расширение, которое можно использовать таким образом? Или мне самому написать макрос?
Как без проблем наделить Boost.Test таким функционалом, если под рукой нет такого макроса?
Мое окончательное решение:
Наконец, я включил в свои тесты следующую простую функцию.
#include <boost/regex.hpp>
bool fileContains(const std::string& filename, const std::string& regexp) {
std::ifstream file(filename);
if (file) {
try {
std::stringstream buffer;
buffer << file.rdbuf();
file.close();
return boost::regex_search(buffer.str(), boost::regex(regexp));
}
catch(const std::exception&) {
return false;
}
} else {
return false;
}
}
Использование будет таким, как показано ниже:
BOOST_CHECK(fileContains("Export.csv","-48.434"));