X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FConsole%2FTraits.test.cc;h=1e77cf73bc20f91d163f2dd573b86706228c56c2;hb=731a143df4de38d4c8b0a81121990951971cd858;hp=054f993407e42792adb48930578002e907313d36;hpb=d001b1fe2a8fb121145d2a111d737219abae20d7;p=senf.git diff --git a/Utils/Console/Traits.test.cc b/Utils/Console/Traits.test.cc index 054f993..1e77cf7 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,8 +40,8 @@ ///////////////////////////////cc.p//////////////////////////////////////// namespace { - enum TestEnum { Foo, Bar }; - SENF_CONSOLE_REGISTER_ENUM( TestEnum, (Foo)(Bar) ); + 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) @@ -139,8 +142,62 @@ BOOST_AUTO_UNIT_TEST(enumSupport) parser.parse("test/member MemberBar", boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); BOOST_CHECK_EQUAL( ss.str(), "MemberBar\n" ); + + ss.str(""); + SENF_CHECK_NO_THROW( + parser.parse("test/test foob", + boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); + BOOST_CHECK_EQUAL( ss.str(), "FooBar\n" ); + + ss.str(""); + SENF_CHECK_NO_THROW( + parser.parse("test/test b", + boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); + BOOST_CHECK_EQUAL( ss.str(), "Bar\n" ); + + 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" ); } +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" ); +} + +BOOST_AUTO_UNIT_TEST(singleToken) +{ + BOOST_CHECK( senf::console::ArgumentTraits::singleToken ); + BOOST_CHECK( senf::console::ArgumentTraits::singleToken ); + BOOST_CHECK( ! senf::console::ArgumentTraits< + senf::console::FlagCollection >::singleToken ); +} ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_