X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FConsole%2FParsedCommand.test.cc;h=78ecd03f7fcc17999095166a6ea60bbf061f16cf;hb=4101c2b818ec67e7469ebb44f030eed2185c4ab0;hp=31f8cee7881ec1c02ec4cabbc568dca68f3da04f;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/Utils/Console/ParsedCommand.test.cc b/senf/Utils/Console/ParsedCommand.test.cc index 31f8cee..78ecd03 100644 --- a/senf/Utils/Console/ParsedCommand.test.cc +++ b/senf/Utils/Console/ParsedCommand.test.cc @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2008 +// Copyright (C) 2008 // Fraunhofer Institute for Open Communication Systems (FOKUS) // Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund @@ -29,26 +29,23 @@ // Custom includes #include #include -#include "ParsedCommand.hh" -#include "Executor.hh" -#include "Parse.hh" -#include "ScopedDirectory.hh" +#include "Console.hh" #include #include #define prefix_ -///////////////////////////////cc.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// namespace { int cb1(int a, double b) { return int(a+b); } - double cb2(){ return 1.2; } + 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, std::string const & v) { os << "Value: " << v << "\n"; } - struct TestParser + struct TestParser { void operator()(senf::console::ParseCommandInfo::TokensRange const &, std::string & out) const @@ -59,8 +56,10 @@ namespace { { os << "formatter"; } } -BOOST_AUTO_UNIT_TEST(parsedCommand) +SENF_AUTO_UNIT_TEST(parsedCommand) { + namespace fty = senf::console::factory; + senf::console::Executor executor; senf::console::CommandParser parser; senf::console::ScopedDirectory<> dir; @@ -68,15 +67,15 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) { std::stringstream ss; - dir.add("cb1", &cb1); - parser.parse("test/cb1 2 3.2", + dir.add("cb1", fty::Command(&cb1)); + parser.parse("test/cb1 2 3.2", boost::bind( boost::ref(executor), boost::ref(ss), _1 )); BOOST_CHECK_EQUAL( ss.str(), "5\n" ); } { std::stringstream ss; - dir.add("cb2", &cb2); + dir.add("cb2", fty::Command(&cb2)); parser.parse("test/cb2", boost::bind( boost::ref(executor), boost::ref(ss), _1 )); BOOST_CHECK_EQUAL( ss.str(), "1.2\n" ); @@ -84,7 +83,7 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) { std::stringstream ss; - dir.add("cb3", &cb3); + dir.add("cb3", fty::Command(&cb3)); parser.parse("test/cb3 234", boost::bind( boost::ref(executor), boost::ref(ss), _1 )); BOOST_CHECK_EQUAL( ss.str(), "" ); @@ -92,7 +91,7 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) { std::stringstream ss; - dir.add("cb4", &cb4); + dir.add("cb4", fty::Command(&cb4)); parser.parse("test/cb4", boost::bind( boost::ref(executor), boost::ref(ss), _1 )); BOOST_CHECK_EQUAL( ss.str(), "text\n" "value\n" ); @@ -100,7 +99,7 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) { std::stringstream ss; - dir.add("cb5", &cb5); + dir.add("cb5", fty::Command(&cb5)); parser.parse("test/cb5 1234", boost::bind( boost::ref(executor), boost::ref(ss), _1 )); BOOST_CHECK_EQUAL( ss.str(), "Value: 1234\n" ); @@ -109,18 +108,18 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) { std::stringstream ss; - BOOST_CHECK_THROW( - parser.parse("test/cb1 2 3.2 foo", + BOOST_CHECK_THROW( + parser.parse("test/cb1 2 3.2 foo", boost::bind( boost::ref(executor), boost::ref(ss), _1 )), senf::console::SyntaxErrorException ); BOOST_CHECK_THROW( - parser.parse("test/cb1 2", + parser.parse("test/cb1 2", boost::bind( boost::ref(executor), boost::ref(ss), _1 )), senf::console::SyntaxErrorException ); BOOST_CHECK_THROW( - parser.parse("test/cb1 2 foo", + parser.parse("test/cb1 2 foo", boost::bind( boost::ref(executor), boost::ref(ss), _1 )), senf::console::SyntaxErrorException ); } @@ -130,8 +129,10 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) std::stringstream ss; // Just for the fun of it, use a functor and not a function pointer as parser ... - dir.add("cb6", &cb5) - .arg( kw::parser = TestParser() ); + dir.add("cb6", + fty::Command(&cb5) + .arg( kw::parser = TestParser() ) + ); SENF_CHECK_NO_THROW( parser.parse("test/cb6 false", boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); @@ -141,10 +142,12 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) { std::stringstream ss; - // This tests adding boost::function objects and at the same time validates, that + // This tests adding boost::function objects and at the same time validates, that // compatible types also work - dir.add("cb7", boost::function(&cb2)) - .formatter( &testFormatter ); + dir.add("cb7", + fty::Command(boost::function(&cb2)) + .formatter( &testFormatter ) + ); SENF_CHECK_NO_THROW( parser.parse("test/cb7", boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); @@ -156,7 +159,7 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) using namespace senf::console::kw; - dir.add("cb", &cb1) + dir.add("cb", fty::Command(&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" @@ -174,21 +177,23 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) .arg( description = "Bar didelfrump di desgorb. Nu widsoflar brimeldrgf." ) - .arg( name = "checkup", + .arg( name = "checkup", type_name = "number", description = "Florgel, dargel and durgel", default_value = 2.1, - default_doc = "(double) 2.1" ); + default_doc = "(double) 2.1" ) + ); senf::console::OverloadedCommandNode & cbNode ( - dir.add("cb", &cb5) + dir.add("cb", fty::Command(&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." ) - .arg( "text", default_value = "" ) ); + "iam, in vos nam Custodi." ) + .arg( "text", default_value = "" ) ) + ); - (void) cbNode; + senf::IGNORE( cbNode ); SENF_CHECK_NO_THROW( parser.parse("test/cb 111 222.4", @@ -211,8 +216,8 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) { std::stringstream ss; senf::console::root()["test"]("cb").help(ss); - BOOST_CHECK_EQUAL( - ss.str(), + BOOST_CHECK_EQUAL( + ss.str(), "Usage:\n" " 1- cb arg11:int [checkup:number]\n" " 2- cb [text:string]\n" @@ -222,7 +227,7 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) " checkup Florgel, dargel and durgel\n" " default: (double) 2.1\n" " text \n" - " default: (empty)\n" + " default: \"\"\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" @@ -243,14 +248,14 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) } namespace { - - struct Test + struct Test { senf::console::ScopedDirectory dir; std::string name_; Test(std::string const & name) : dir(this), name_ (name) { - dir.add("name", &Test::name); + dir.add("name", senf::console::factory::Command( + SENF_MEMBINDFNP(std::string, Test, name, (std::string const &)))); } std::string name(std::string const & suffix) { @@ -260,17 +265,17 @@ namespace { } -BOOST_AUTO_UNIT_TEST(memberParsedCommand) +SENF_AUTO_UNIT_TEST(memberParsedCommand) { senf::console::Executor executor; senf::console::CommandParser parser; senf::console::ScopedDirectory<> dir; senf::console::root().add("test", dir); - + { Test obj ("bar"); dir.add("obj", obj.dir); - + std::stringstream ss; parser.parse("test/obj/name \": foo\"", boost::bind( boost::ref(executor), boost::ref(ss), _1 )); @@ -280,34 +285,38 @@ BOOST_AUTO_UNIT_TEST(memberParsedCommand) namespace { - senf::console::DirectoryNode::ptr dircb() + senf::console::DirectoryNode::ptr dircb() { + namespace fty = senf::console::factory; + senf::console::DirectoryNode & dir ( - senf::console::root()["test"].mkdir("dircb")); - dir.add("cb1", &cb1); + senf::console::root()["test"].add("dircb", fty::Directory())); + dir.add("cb1", fty::Command(&cb1)); return dir.thisptr(); } } -BOOST_AUTO_UNIT_TEST(directoryReturn) +SENF_AUTO_UNIT_TEST(directoryReturn) { + namespace fty = senf::console::factory; + senf::console::Executor executor; senf::console::CommandParser parser; senf::console::ScopedDirectory<> dir; senf::console::root().add("test", dir); - dir.add("test", &dircb); + dir.add("test", fty::Command(&dircb)); { std::stringstream ss; SENF_CHECK_NO_THROW( parser.parse("test/test { ll; }", boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); - BOOST_CHECK_EQUAL( ss.str(), + BOOST_CHECK_EQUAL( ss.str(), "\n" "cb1 \n" ); } - + } #ifdef COMPILE_CHECK @@ -334,8 +343,8 @@ COMPILE_FAIL(defaultDoc) } #endif - -///////////////////////////////cc.e//////////////////////////////////////// + +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_