Я сейчас внедряю библиотеку для экспорта данных в различные форматы с множеством настроек. Я также использую Boost.Test, но, похоже, нет никакой функции для проверки содержимого файла.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"));
Большое спасибо за этот подробный ответ. Мне стало ясно, что не будет решения, которое могло бы удовлетворить все требования всех тестов. Кажется, я должен полагаться на запись простой функции, как вы предложили. – Aleph0