Je suis nouveau à Boost.Spirit et Boost.Test et je voudrais savoir comment vous vérifiez l'exactitude de vos grammaires. Ci-dessous est une version simplifiée de la façon dont je le fais pour le moment et je suis sûr qu'il y a une meilleure façon:Tests unitaires pour Boost.Spirit
Chaque cas de test possède une paire de deux chaînes contenant le texte à analyser et le résultat attendu délimité par des points-virgules .
Les fonctions d'analyse effectuent l'analyse réelle et retournent une chaîne qui doit être égale au résultat attendu.
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()
Je ne sais pas, mais pourquoi tu le veux "mieux"? – user51568
Je diviserais cela en une question et une réponse possible. De cette façon, les gens peuvent voter s'ils pensent que votre solution est vraiment la meilleure. – itsadok