X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FConsole%2FTraits.test.cc;h=03dc80ede1f39f6871944e3b3722f20587b1b568;hb=82e8df5de8b11448423388632e8602ad97bc7885;hp=2e54245acb61088eb4a9c98eb8519ac6e59ab99f;hpb=4941cc3d46b3c8066eee01846e2d8de01b87e4e2;p=senf.git diff --git a/Utils/Console/Traits.test.cc b/Utils/Console/Traits.test.cc index 2e54245..03dc80e 100644 --- a/Utils/Console/Traits.test.cc +++ b/Utils/Console/Traits.test.cc @@ -21,7 +21,7 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief Traits.test unit tests */ + \brief Traits unit tests */ //#include "Traits.test.hh" //#include "Traits.test.ih" @@ -40,7 +40,7 @@ ///////////////////////////////cc.p//////////////////////////////////////// namespace { - enum TestEnum { Foo, Bar, FooBar }; + enum TestEnum { Foo=1, Bar=2, FooBar=4 }; SENF_CONSOLE_REGISTER_ENUM( TestEnum, (Foo)(Bar)(FooBar) ); TestEnum test (TestEnum value) { return value; } @@ -52,6 +52,9 @@ namespace { SENF_CONSOLE_REGISTER_ENUM_MEMBER( TestClass, MemberEnum, (MemberFoo)(MemberBar) ); bool boolTest(bool value) { return value; } + + senf::console::FlagCollection collectionTest( + senf::console::FlagCollection flags) { return flags; } } BOOST_AUTO_UNIT_TEST(boolTraits) @@ -159,6 +162,34 @@ BOOST_AUTO_UNIT_TEST(enumSupport) BOOST_CHECK_EQUAL( ss.str(), "Foo\n" ); } +BOOST_AUTO_UNIT_TEST(flagCollection) +{ + senf::console::Executor executor; + senf::console::CommandParser parser; + senf::console::ScopedDirectory<> dir; + senf::console::root().add("test", dir); + std::stringstream ss; + + dir.add("test",&collectionTest); + + ss.str(""); + SENF_CHECK_NO_THROW( + parser.parse("test/test foo", + boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); + BOOST_CHECK_EQUAL( ss.str(), "Foo\n" ); + + ss.str(""); + SENF_CHECK_NO_THROW( + parser.parse("test/test (foo bar)", + boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); + BOOST_CHECK_EQUAL( ss.str(), "(Foo Bar)\n" ); + + ss.str(""); + SENF_CHECK_NO_THROW( + parser.parse("test/test ()", + boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); + BOOST_CHECK_EQUAL( ss.str(), "()\n" ); +} ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_