X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FParsedCommand.test.cc;h=2b239d600e2010b0f4759f1e489ef7deae16284d;hb=748363b235c4651b3992cc291a95dc2e18e45724;hp=636560831740029638855564f1c7b4cced358dc9;hpb=bf1d8ba5ce6fc6a169a938183f8d01c8bdbccf32;p=senf.git diff --git a/Console/ParsedCommand.test.cc b/Console/ParsedCommand.test.cc index 6365608..2b239d6 100644 --- a/Console/ParsedCommand.test.cc +++ b/Console/ParsedCommand.test.cc @@ -113,8 +113,55 @@ BOOST_AUTO_UNIT_TEST(parsedCommand) boost::bind( boost::ref(executor), boost::ref(ss), _1 )), senf::console::SyntaxErrorException ); } + + { + std::stringstream ss; + + dir.add("cb", &cb1); + dir.add("cb", &cb5); + dir.add("cb", &cb2); + parser.parse("test/cb 111 222.4; test/cb 222; test/cb", + boost::bind( boost::ref(executor), boost::ref(ss), _1 )); + BOOST_CHECK_EQUAL( ss.str(), "333\n" "Value: 222\n" "1.2\n" ); + } +} + +namespace { + + struct Test + { + senf::console::ScopedDirectory dir; + std::string name_; + + Test(std::string const & name) : dir(this), name_ (name) { + dir.add("name", &Test::name); + } + + std::string name(std::string const & suffix) { + return name_ + suffix; + } + + }; } +BOOST_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 )); + BOOST_CHECK_EQUAL( ss.str(), "bar: foo\n" ); + } +} + ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_