X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FParsedCommand.test.cc;h=3487d9cd22f483cdc5eebfa32771d2bbe9fdc2d7;hb=259da4c692259311c6ec99566b57f5ed1e68e93e;hp=98a5584461d4a9ff73185852297624a22f2155d9;hpb=76fe5e8b7de8a71aeb6fe9b1d0ea37d5fa51c87a;p=senf.git diff --git a/Console/ParsedCommand.test.cc b/Console/ParsedCommand.test.cc index 98a5584..3487d9c 100644 --- a/Console/ParsedCommand.test.cc +++ b/Console/ParsedCommand.test.cc @@ -27,6 +27,7 @@ //#include "ParsedCommand.test.ih" // Custom includes +#include #include #include "ParsedCommand.hh" #include "Executor.hh" @@ -42,10 +43,10 @@ namespace { int cb1(int a, double b) { return int(a+b); } - double cb2() { return 1.2; } - void cb3(int) {} + double cb2(){ return 1.2; } + void cb3(int i) { } std::string cb4(std::ostream & os) { os << "text\n"; return "value"; } - void cb5(std::ostream & os, int v) { os << "Value: " << v << "\n"; } + void cb5(std::ostream & os, std::string v) { os << "Value: " << v << "\n"; } } BOOST_AUTO_UNIT_TEST(parsedCommand) @@ -117,12 +118,73 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) { std::stringstream ss; - dir.add("cb", &cb1); - dir.add("cb", &cb5); + using namespace senf::console::kw; + + dir.add("cb", &cb1) + .doc( + "Ops fortunate, ops me ut orgia vociferatio contumax per, rudo re loco emitto\n" + "intolerabiliter ita iugo. Subcribo gravo. Devenio luna fonticulus Castanea\n" + "horum fascino Os interpretor non ipse conjuratio hora, qui filius denuntio ait\n" + "sono te odium Anhelo. Dum Cedo audax celox alius una Agnosco hic, ibi retineo\n" + "lux sto ioco. Per Re dono. Copiose reus scitus jus diligens sis scapulare\n" + "Servitium transi." ) + + .overloadDoc( + "Lo nam balnearius Opprimo Pennatus, no decentia sui, dicto esse se pulchritudo,\n" + "pupa Sive res indifferenter. Captivo pa." ) + + .arg( description = "Bar didelfrump di desgorb. Nu widsoflar brimeldrgf." ) + + .arg( name = "checkup", + description = "Florgel, dargel and durgel", + default_value = 2.1 ); + + senf::console::OverloadedCommandNode & cbNode ( + dir.add("cb", &cb5) + .overloadDoc( + "Uus Primordia fundo falsidicus corium, diurnitas humo pro leto. Sui Ueraciter\n" + "hio eruca lenis qua Agalmate ut fors penitentia. Iugum obdormio anxio nuncupo\n" + "iam, in vos nam Custodi." ) ); + + (void) cbNode; + dir.add("cb", &cb2); - parser.parse("test/cb 111 222.4; test/cb 222; test/cb", + + parser.parse("test/cb 111 222.4; test/cb 222; test/cb foo; test/cb", boost::bind( boost::ref(executor), boost::ref(ss), _1 )); - BOOST_CHECK_EQUAL( ss.str(), "333\n" "Value: 222\n" "1.2\n" ); + BOOST_CHECK_EQUAL( ss.str(), "333\n" "224\n" "Value: foo\n" "1.2\n" ); + } + + { + std::stringstream ss; + senf::console::root()["test"]("cb").help(ss); + BOOST_CHECK_EQUAL( + ss.str(), + "Usage:\n" + " 1- cb arg11:int [checkup:double]\n" + " 2- cb arg21:string\n" + " 3- cb\n" + "\n" + "With:\n" + " arg11 Bar didelfrump di desgorb. Nu widsoflar brimeldrgf.\n" + " checkup Florgel, dargel and durgel\n" + " default: 2.1\n" + "\n" + "Ops fortunate, ops me ut orgia vociferatio contumax per, rudo re loco emitto\n" + "intolerabiliter ita iugo. Subcribo gravo. Devenio luna fonticulus Castanea\n" + "horum fascino Os interpretor non ipse conjuratio hora, qui filius denuntio ait\n" + "sono te odium Anhelo. Dum Cedo audax celox alius una Agnosco hic, ibi retineo\n" + "lux sto ioco. Per Re dono. Copiose reus scitus jus diligens sis scapulare\n" + "Servitium transi.\n" + "\n" + "Variant 1:\n" + "Lo nam balnearius Opprimo Pennatus, no decentia sui, dicto esse se pulchritudo,\n" + "pupa Sive res indifferenter. Captivo pa.\n" + "\n" + "Variant 2:\n" + "Uus Primordia fundo falsidicus corium, diurnitas humo pro leto. Sui Ueraciter\n" + "hio eruca lenis qua Agalmate ut fors penitentia. Iugum obdormio anxio nuncupo\n" + "iam, in vos nam Custodi.\n" ); } } @@ -140,8 +202,8 @@ namespace { std::string name(std::string const & suffix) { return name_ + suffix; } - }; + } BOOST_AUTO_UNIT_TEST(memberParsedCommand) @@ -161,6 +223,19 @@ BOOST_AUTO_UNIT_TEST(memberParsedCommand) BOOST_CHECK_EQUAL( ss.str(), "bar: foo\n" ); } } + +#ifdef COMPILE_CHECK + +COMPILE_FAIL(argParser) +{ + senf::console::ScopedDirectory<> dir; + dir.add("cb", &cb1) + .arg() + .arg() + .arg(); +} + +#endif ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_