Utils/Console: fix for changed order of senf::console::factory::Command parameters
[senf.git] / senf / Utils / Console / ParsedCommand.test.cc
index 31f8cee..197b0ab 100644 (file)
 // Custom includes
 #include <iostream>
 #include <sstream>
-#include "ParsedCommand.hh"
-#include "Executor.hh"
-#include "Parse.hh"
-#include "ScopedDirectory.hh"
+#include "Console.hh"
 
 #include <senf/Utils/auto_unit_test.hh>
 #include <boost/test/test_tools.hpp>
@@ -43,7 +40,7 @@
 namespace {
 
     int cb1(int a, double b) { return int(a+b); }
-    double cb2(){ return 1.2; }
+    double cb2() { return 1.2; }
     void cb3(int i) { }
     std::string cb4(std::ostream & os) { os << "text\n"; return "value"; }
     void cb5(std::ostream & os, std::string const & v) { os << "Value: " << v << "\n"; }
@@ -59,8 +56,10 @@ namespace {
     { os << "formatter"; }
 }
 
-BOOST_AUTO_UNIT_TEST(parsedCommand)
+SENF_AUTO_UNIT_TEST(parsedCommand)
 {
+    namespace fty = senf::console::factory;
+
     senf::console::Executor executor;
     senf::console::CommandParser parser;
     senf::console::ScopedDirectory<> dir;
@@ -68,7 +67,7 @@ BOOST_AUTO_UNIT_TEST(parsedCommand)
 
     {
         std::stringstream ss;
-        dir.add("cb1", &cb1);
+        dir.add("cb1", fty::Command(&cb1));
         parser.parse("test/cb1 2 3.2", 
                      boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 ));
         BOOST_CHECK_EQUAL( ss.str(), "5\n" );
@@ -76,7 +75,7 @@ BOOST_AUTO_UNIT_TEST(parsedCommand)
 
     {
         std::stringstream ss;
-        dir.add("cb2", &cb2);
+        dir.add("cb2", fty::Command(&cb2));
         parser.parse("test/cb2",
                      boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 ));
         BOOST_CHECK_EQUAL( ss.str(), "1.2\n" );
@@ -84,7 +83,7 @@ BOOST_AUTO_UNIT_TEST(parsedCommand)
 
     {
         std::stringstream ss;
-        dir.add("cb3", &cb3);
+        dir.add("cb3", fty::Command(&cb3));
         parser.parse("test/cb3 234",
                      boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 ));
         BOOST_CHECK_EQUAL( ss.str(), "" );
@@ -92,7 +91,7 @@ BOOST_AUTO_UNIT_TEST(parsedCommand)
 
     {
         std::stringstream ss;
-        dir.add("cb4", &cb4);
+        dir.add("cb4", fty::Command(&cb4));
         parser.parse("test/cb4",
                      boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 ));
         BOOST_CHECK_EQUAL( ss.str(), "text\n" "value\n" );
@@ -100,7 +99,7 @@ BOOST_AUTO_UNIT_TEST(parsedCommand)
 
     {
         std::stringstream ss;
-        dir.add("cb5", &cb5);
+        dir.add("cb5", fty::Command(&cb5));
         parser.parse("test/cb5 1234",
                      boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 ));
         BOOST_CHECK_EQUAL( ss.str(), "Value: 1234\n" );
@@ -130,8 +129,10 @@ BOOST_AUTO_UNIT_TEST(parsedCommand)
         std::stringstream ss;
 
         // Just for the fun of it, use a functor and not a function pointer as parser ...
-        dir.add("cb6", &cb5)
-            .arg( kw::parser = TestParser() );
+        dir.add("cb6", 
+                fty::Command(&cb5)
+                    .arg( kw::parser = TestParser() )
+            );
         SENF_CHECK_NO_THROW(
             parser.parse("test/cb6 false",
                          boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 )) );
@@ -143,8 +144,10 @@ BOOST_AUTO_UNIT_TEST(parsedCommand)
 
         // This tests adding boost::function objects and at the same time validates, that 
         // compatible types also work
-        dir.add("cb7", boost::function<float()>(&cb2))
-            .formatter( &testFormatter );
+        dir.add("cb7", 
+                fty::Command(boost::function<float()>(&cb2))
+                    .formatter( &testFormatter )
+            );
         SENF_CHECK_NO_THROW(
             parser.parse("test/cb7",
                          boost::bind<void>( boost::ref(executor), boost::ref(ss), _1 )) );
@@ -156,7 +159,7 @@ BOOST_AUTO_UNIT_TEST(parsedCommand)
 
         using namespace senf::console::kw;
 
-        dir.add("cb", &cb1)
+        dir.add("cb", fty::Command(&cb1)
             .doc(
                 "Ops fortunate, ops me ut orgia vociferatio contumax per, rudo re loco emitto\n"
                 "intolerabiliter ita iugo. Subcribo gravo. Devenio luna fonticulus Castanea\n"
@@ -178,15 +181,17 @@ BOOST_AUTO_UNIT_TEST(parsedCommand)
                   type_name     = "number",
                   description   = "Florgel, dargel and durgel",
                   default_value = 2.1,
-                  default_doc   = "(double) 2.1" );
+                  default_doc   = "(double) 2.1" )
+            );
 
         senf::console::OverloadedCommandNode & cbNode (
-            dir.add("cb", &cb5)
+            dir.add("cb", fty::Command(&cb5)
                 .overloadDoc(
                     "Uus Primordia fundo falsidicus corium, diurnitas humo pro leto. Sui Ueraciter\n"
                     "hio eruca lenis qua Agalmate ut fors penitentia. Iugum obdormio anxio nuncupo\n"
                     "iam, in vos nam Custodi." ) 
-                .arg( "text", default_value = "" ) );
+                .arg( "text", default_value = "" ) )
+            );
 
         (void) cbNode;
 
@@ -222,7 +227,7 @@ BOOST_AUTO_UNIT_TEST(parsedCommand)
             "    checkup   Florgel, dargel and durgel\n"
             "        default: (double) 2.1\n"
             "    text      \n"
-            "        default: (empty)\n"
+            "        default: \"\"\n"
             "\n"
             "Ops fortunate, ops me ut orgia vociferatio contumax per, rudo re loco emitto\n"
             "intolerabiliter ita iugo. Subcribo gravo. Devenio luna fonticulus Castanea\n"
@@ -243,14 +248,14 @@ BOOST_AUTO_UNIT_TEST(parsedCommand)
 }
 
 namespace {
-
     struct Test 
     {
         senf::console::ScopedDirectory<Test> dir;
         std::string name_;
 
         Test(std::string const & name) : dir(this), name_ (name) {
-            dir.add("name", &Test::name);
+            dir.add("name", senf::console::factory::Command(
+                        SENF_MEMBINDFNP(std::string, Test, name, (std::string const &))));
         }
 
         std::string name(std::string const & suffix) {
@@ -260,7 +265,7 @@ namespace {
 
 }
 
-BOOST_AUTO_UNIT_TEST(memberParsedCommand)
+SENF_AUTO_UNIT_TEST(memberParsedCommand)
 {
     senf::console::Executor executor;
     senf::console::CommandParser parser;
@@ -282,21 +287,25 @@ namespace {
 
     senf::console::DirectoryNode::ptr dircb() 
     {
+        namespace fty = senf::console::factory;
+
         senf::console::DirectoryNode & dir (
-            senf::console::root()["test"].mkdir("dircb"));
-        dir.add("cb1", &cb1);
+            senf::console::root()["test"].add("dircb", fty::Directory()));
+        dir.add("cb1", fty::Command(&cb1));
         return dir.thisptr();
     }
 
 }
 
-BOOST_AUTO_UNIT_TEST(directoryReturn)
+SENF_AUTO_UNIT_TEST(directoryReturn)
 {
+    namespace fty = senf::console::factory;
+
     senf::console::Executor executor;
     senf::console::CommandParser parser;
     senf::console::ScopedDirectory<> dir;
     senf::console::root().add("test", dir);
-    dir.add("test", &dircb);
+    dir.add("test", fty::Command(&dircb));
 
     {
         std::stringstream ss;