X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FTraits.test.cc;h=b11c4b5c213251b7c7bcc7201d8116586e77bbef;hb=1863c038d0400159ce49b851a5b81c2ce698c684;hp=861d0f016e47bfdbfaf2ceb576191977ce44b5ed;hpb=0eaf5340de8c2fbb02b1e0e13a797931e221dff3;p=senf.git diff --git a/Console/Traits.test.cc b/Console/Traits.test.cc index 861d0f0..b11c4b5 100644 --- a/Console/Traits.test.cc +++ b/Console/Traits.test.cc @@ -44,6 +44,13 @@ namespace { SENF_CONSOLE_REGISTER_ENUM( TestEnum, (Foo)(Bar) ); TestEnum test (TestEnum value) { return value; } + + struct TestClass { + enum MemberEnum { MemberFoo, MemberBar }; + static MemberEnum test (MemberEnum value) { return value; } + }; + SENF_CONSOLE_REGISTER_ENUM_MEMBER( TestClass, MemberEnum, (MemberFoo)(MemberBar) ); + } BOOST_AUTO_UNIT_TEST(enumSupport) @@ -76,6 +83,20 @@ BOOST_AUTO_UNIT_TEST(enumSupport) parser.parse("test/test Baz", boost::bind( boost::ref(executor), boost::ref(ss), _1 )), senf::console::SyntaxErrorException ); + + dir.add("member", &TestClass::test); + + ss.str(""); + BOOST_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( + parser.parse("test/member MemberBar", + boost::bind( boost::ref(executor), boost::ref(ss), _1 )) ); + BOOST_CHECK_EQUAL( ss.str(), "MemberBar\n" ); }