X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FConsole%2FSTLSupport.test.cc;h=9ce13ad85f5c6450fdaf374d32facff0405c5ec5;hb=3a0e403d889f8a16d78d50bbcd7a0f0157b05313;hp=c920f62e6bec9f21eb563e1267c9fe6f30ac5454;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/Utils/Console/STLSupport.test.cc b/senf/Utils/Console/STLSupport.test.cc index c920f62..9ce13ad 100644 --- a/senf/Utils/Console/STLSupport.test.cc +++ b/senf/Utils/Console/STLSupport.test.cc @@ -28,11 +28,7 @@ // Custom includes #include -#include "STLSupport.hh" -#include "ParsedCommand.hh" -#include "Executor.hh" -#include "Parse.hh" -#include "ScopedDirectory.hh" +#include "Console.hh" #include #include @@ -42,34 +38,46 @@ namespace { - int vectorTest(std::vector const & data) + template + struct Summer { - int sum (0); - for (std::vector::const_iterator i (data.begin()); i != data.end(); ++i) - sum += *i; - return sum; - } - - int listTest(std::list const & data) + static int test(Container const & data) + { + int sum (0); + for (typename Container::const_iterator i (data.begin()), i_end (data.end()); + i != i_end; ++i) + sum += *i; + return sum; + } + }; + + std::pair mapTest(std::map const & data) { + std::string keys; int sum (0); - for (std::list::const_iterator i (data.begin()); i != data.end(); ++i) - sum += *i; - return sum; + for (std::map::const_iterator i (data.begin()), i_end (data.end()); + i != i_end; ++i) { + keys += i->first; + sum += i->second; + } + return std::make_pair(keys,sum); } - + } -BOOST_AUTO_UNIT_TEST(vectorSupport) +SENF_AUTO_UNIT_TEST(vectorSupport) { + namespace fty = senf::console::factory; + senf::console::Executor executor; senf::console::CommandParser parser; senf::console::ScopedDirectory<> dir; senf::console::root().add("test", dir); std::vector defv (boost::assign::list_of(7)(2).to_container(defv)); - dir.add("test", &vectorTest) - .arg("data", "test data", senf::console::kw::default_value = defv); + dir.add("test", fty::Command(&Summer >::test) + .arg("data", "test data", senf::console::kw::default_value = defv) + ); std::stringstream ss; SENF_CHECK_NO_THROW( @@ -91,16 +99,19 @@ BOOST_AUTO_UNIT_TEST(vectorSupport) " default: (7 2)\n" ); } -BOOST_AUTO_UNIT_TEST(listSupport) +SENF_AUTO_UNIT_TEST(listSupport) { + namespace fty = senf::console::factory; + senf::console::Executor executor; senf::console::CommandParser parser; senf::console::ScopedDirectory<> dir; senf::console::root().add("test", dir); std::list defv (boost::assign::list_of(7)(2).to_container(defv)); - dir.add("test", &listTest) - .arg("data", "test data", senf::console::kw::default_value = defv); + dir.add("test", fty::Command(&Summer >::test) + .arg("data", "test data", senf::console::kw::default_value = defv) + ); std::stringstream ss; SENF_CHECK_NO_THROW( @@ -122,6 +133,76 @@ BOOST_AUTO_UNIT_TEST(listSupport) " default: (7 2)\n" ); } +SENF_AUTO_UNIT_TEST(setSupport) +{ + namespace fty = senf::console::factory; + + senf::console::Executor executor; + senf::console::CommandParser parser; + senf::console::ScopedDirectory<> dir; + senf::console::root().add("test", dir); + + std::set defv (boost::assign::list_of(7)(2).to_container(defv)); + dir.add("test", fty::Command(&Summer >::test) + .arg("data", "test data", senf::console::kw::default_value = defv) + ); + std::stringstream ss; + + SENF_CHECK_NO_THROW( + parser.parse("test/test; test/test (); test/test 5; test/test (13); test/test (4 5 8)", + boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); + BOOST_CHECK_EQUAL( ss.str(), "9\n" "0\n" "5\n" "13\n" "17\n" ); + + ss.str(""); + SENF_CHECK_NO_THROW( + parser.parse("help test/test", + boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); + BOOST_CHECK_EQUAL( + ss.str(), + "Usage:\n" + " test [data:set]\n" + "\n" + "With:\n" + " data test data\n" + " default: (2 7)\n" ); +} + +SENF_AUTO_UNIT_TEST(mapSupport) +{ + namespace fty = senf::console::factory; + + senf::console::Executor executor; + senf::console::CommandParser parser; + senf::console::ScopedDirectory<> dir; + senf::console::root().add("test", dir); + + std::map defv ( + boost::assign::map_list_of("foo bar",7)("bar",2).to_container(defv)); + dir.add("test", fty::Command(&mapTest) + .arg("data", "test data", senf::console::kw::default_value = defv) + ); + std::stringstream ss; + + SENF_CHECK_NO_THROW( + parser.parse("test/test; test/test (); " + "test/test (vier=4 fuenf = 5 acht=8 )", + boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); + BOOST_CHECK_EQUAL( ss.str(), "(\"barfoo bar\" 9)\n" "(\"\" 0)\n" "(achtfuenfvier 17)\n" ); // + + ss.str(""); + SENF_CHECK_NO_THROW( + parser.parse("help test/test", + boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); + BOOST_CHECK_EQUAL( + ss.str(), + "Usage:\n" + " test [data:map]\n" + "\n" + "With:\n" + " data test data\n" + " default: (bar=2 \"foo bar\"=7)\n" ); +} + ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_