X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FVariables.test.cc;h=502474d28a79f07db7f313f906454e7bf772f651;hb=e879290346fe5242d7df2d70ee552d264081492f;hp=74cdeceaf4900d207b09d92133d1c4839c5655d7;hpb=80c83d2565c50f8ad33af2be0f4cb3e5735cafcf;p=senf.git diff --git a/Console/Variables.test.cc b/Console/Variables.test.cc index 74cdece..502474d 100644 --- a/Console/Variables.test.cc +++ b/Console/Variables.test.cc @@ -34,12 +34,24 @@ #include "Parse.hh" #include "ScopedDirectory.hh" -#include +#include "../Utils/auto_unit_test.hh" #include #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// +namespace { + void testParser(senf::console::ParseCommandInfo::TokensRange const &, int & value) + { value = 0; } + + void testFormatter(int value, std::ostream & os) + { os << '[' << value << ']'; } + + static bool changed_ (false); + void testCallback(int oldValue) + { changed_ = true; } +} + BOOST_AUTO_UNIT_TEST(variables) { senf::console::Executor executor; @@ -50,12 +62,49 @@ BOOST_AUTO_UNIT_TEST(variables) int var (5); std::stringstream ss; - dir.add("var", &var); + dir.add("var", var) + .doc("Current blorg limit") + .formatter(&testFormatter) + .parser(&testParser) + .typeName("number") + .onChange(&testCallback); parser.parse("test/var; test/var 10; test/var", boost::bind( boost::ref(executor), boost::ref(ss), _1 )); - BOOST_CHECK_EQUAL( ss.str(), "5\n10\n" ); + BOOST_CHECK_EQUAL( ss.str(), "[5]\n[0]\n" ); + BOOST_CHECK( changed_ ); + + ss.str(""); + dir("var").help(ss); + BOOST_CHECK_EQUAL(ss.str(), + "Usage:\n" + " 1- var new_value:number\n" + " 2- var\n" + "\n" + "Current blorg limit\n"); + + dir.add("refvar", boost::ref(var)) + .doc("Current blorg limit") + .formatter(&testFormatter) + .parser(&testParser) + .typeName("number"); + + dir.add("crefvar", boost::cref(var)) + .doc("Current blorg limit") + .formatter(&testFormatter); } +#ifdef COMPILE_CHECK + +COMPILE_FAIL(constVariable) +{ + senf::console::ScopedDirectory<> dir; + int var; + dir.add("var", boost::cref(var)) + .parser(&testParser); +} + +#endif + ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_