X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FConsole%2FTraits.test.cc;h=03dc80ede1f39f6871944e3b3722f20587b1b568;hb=b8ca4a544cce3e6023bb56b712a03d6362f2bb79;hp=b8d366bcf35610732e7227888f505c449ed32ddb;hpb=958bdb52c39fa39f4ef91cafd9628bcb4f85a03c;p=senf.git diff --git a/Utils/Console/Traits.test.cc b/Utils/Console/Traits.test.cc index b8d366b..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,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) @@ -64,32 +67,32 @@ BOOST_AUTO_UNIT_TEST(boolTraits) dir.add("test", &boolTest); std::stringstream ss; - BOOST_CHECK_NO_THROW( + SENF_CHECK_NO_THROW( parser.parse("test/test true; test/test false", boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); BOOST_CHECK_EQUAL( ss.str(), "true\n" "false\n" ); ss.str(""); - BOOST_CHECK_NO_THROW( + SENF_CHECK_NO_THROW( parser.parse("test/test enabled; test/test disabled", boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); BOOST_CHECK_EQUAL( ss.str(), "true\n" "false\n" ); ss.str(""); - BOOST_CHECK_NO_THROW( + SENF_CHECK_NO_THROW( parser.parse("test/test yes; test/test no", boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); BOOST_CHECK_EQUAL( ss.str(), "true\n" "false\n" ); ss.str(""); - BOOST_CHECK_NO_THROW( + SENF_CHECK_NO_THROW( parser.parse("test/test Y; test/test enA", boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); BOOST_CHECK_EQUAL( ss.str(), "true\n" "true\n" ); dir.add("test2", &boolTest).formatter( senf::console::formatEnabledDisabled ); ss.str(""); - BOOST_CHECK_NO_THROW( + SENF_CHECK_NO_THROW( parser.parse("test/test2 0; test/test2 -1", boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); BOOST_CHECK_EQUAL( ss.str(), "disabled\n" "enabled\n" ); @@ -105,13 +108,13 @@ BOOST_AUTO_UNIT_TEST(enumSupport) dir.add("test",&test); std::stringstream ss; - BOOST_CHECK_NO_THROW( + 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(""); - BOOST_CHECK_NO_THROW( + SENF_CHECK_NO_THROW( parser.parse("test/test Bar", boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); BOOST_CHECK_EQUAL( ss.str(), "Bar\n" ); @@ -129,18 +132,64 @@ BOOST_AUTO_UNIT_TEST(enumSupport) dir.add("member", &TestClass::test); ss.str(""); - BOOST_CHECK_NO_THROW( + SENF_CHECK_NO_THROW( parser.parse("test/member MemberFoo", boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); BOOST_CHECK_EQUAL( ss.str(), "MemberFoo\n" ); ss.str(""); - BOOST_CHECK_NO_THROW( + SENF_CHECK_NO_THROW( 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" ); +} ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_