我是Boost.Spirit和Boost.Test的新手,我想知道您是如何驗證語法的正確性的。下面是目前我如何做的一個簡化版本,我敢肯定還有更好的方法:Boost.Spirit的單元測試
每個測試用例都有一對兩個字符串,其中包含要解析的文本和預期結果以分號分隔。
解析函數執行實際解析並返回應該等於預期結果的字符串。
std::string parse(std::string const & line) {
std::string name;
int hours;
rule<> top_rule = ... ; // rule assignes values to 'name' and 'hours'
parse_info<> info = parse(line.c_str(), top_rule);
if(info.full) {
std::stringstream sstr;
sstr << name << ";" << hours;
return sstr.str();
}
return "parser failed.";
}
BOOST_AUTO_TEST_SUITE(TestSuite)
BOOST_AUTO_TEST_CASE(TestCase) {
BOOST_CHECK_EQUAL(parse("Tom worked for 10 hours."), "Tom;10");
}
BOOST_AUTO_TEST_SUITE_END()
我不這樣做,但你爲什麼要「更好」? – user51568 2009-01-27 17:36:57