Domanda

Sono nuovo di Spinta.Lo spirito e la Spinta.Test e vorrei sapere come verificare la correttezza delle grammatiche.Qui di seguito è una versione semplificata di come fare al momento, e sono abbastanza sicuro che c'è un modo migliore:

Ogni test case hase di una coppia di due stringhe contenente il testo da analizzare e il risultato previsto delimitato da punti e virgola.

L'analisi funzioni l'analisi e la restituisce una stringa che dovrebbe essere uguale al risultato atteso.

 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()
È stato utile?

Soluzione

In generale, il tuo approccio mi sembra bene a me.Io probabilmente la classe del gruppo di test, in funzione con nomi descrittivi, ad esempioTestInvalidGrammar, TestErrorHandling, TestNestedGrammar etc.e sono coloro che sono chiamati dal principale.

Io sono sicuro di aver letto la documentazione, ma dare un'occhiata a esempi se aiuta.

Altri suggerimenti

Qui si può vedere come essi (il boost spirito autori), di mettere alla prova le proprie parser: http://svn.boost.org/svn/boost/trunk/libs/spirit/test/qi/grammar.cpp .Per ogni parte del qi è possibile trovare un file di C++ qui: http://svn.boost.org/svn/boost/trunk/libs/spirit/test/qi/.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top