X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FConfig.test.cc;h=58d5c1b1b3c735094ce927b2dfb29409fa3cd1f4;hb=4e2b741f18b63e97ab4eef30fcee1dec999541be;hp=df5c070b95e190cc7a6de7b66dd8712b3fd2fdf4;hpb=bf6bdcb90de19ed474535d41c5519518921b717b;p=senf.git diff --git a/Console/Config.test.cc b/Console/Config.test.cc index df5c070..58d5c1b 100644 --- a/Console/Config.test.cc +++ b/Console/Config.test.cc @@ -28,9 +28,10 @@ // Custom includes #include "Config.hh" -#include #include "ScopedDirectory.hh" #include "ParsedCommand.hh" +#include "ConfigFile.hh" +#include "ProgramOptions.hh" #include #include "../Utils/auto_unit_test.hh" @@ -40,12 +41,14 @@ ///////////////////////////////cc.p//////////////////////////////////////// namespace { + std::string val1; + bool val2 (false); - int var1 (0); - bool var2 (false); - - void fun1(int v) { var1 = v; } - void fun2() { var2 = true; } + void fun1(std::string p) + { val1 = p; } + + void fun2() + { val2 = true; } class TempFile { @@ -61,96 +64,28 @@ namespace { std::string name_; std::ofstream file_; }; - - } -BOOST_AUTO_UNIT_TEST(configFile) +BOOST_AUTO_UNIT_TEST(configBundle) { - TempFile cfgf ("test.cfg"); - cfgf << "dir1/fun1 10;\n" - << TempFile::close; - - senf::console::ScopedDirectory<> dir1; - senf::console::root().add("dir1", dir1); - dir1.add("fun1",&fun1); + senf::console::ScopedDirectory<> root; + senf::console::root().add("root",root); - { - var1 = 0; - senf::console::ConfigFile cfg (cfgf.name()); - SENF_CHECK_NO_THROW( cfg.parse() ) - BOOST_CHECK_EQUAL( var1, 10 ); - } -} + root.mkdir("dir1").add("fun1",&fun1); + root.add("fun2",&fun2); -BOOST_AUTO_UNIT_TEST(configFileRestrict) -{ - TempFile cfgf ("test.cfg"); - cfgf << "dir1/fun1 10;\n" - << "dir2/fun2;\n" - << TempFile::close; - - senf::console::ScopedDirectory<> dir1; - senf::console::root().add("dir1", dir1); - dir1.add("fun1",&fun1); - - { - var1 = 0; - var2 = false; - senf::console::ConfigFile cfg (cfgf.name()); - SENF_CHECK_NO_THROW( cfg.parse(dir1.node()) ); - BOOST_CHECK_EQUAL( var1, 10 ); - BOOST_CHECK_EQUAL( var2, false ); - - senf::console::ScopedDirectory<> dir2; - senf::console::root().add("dir2", dir2); - dir2.add("fun2",&fun2); - - var1 = 0; - var2 = false; - SENF_CHECK_NO_THROW( cfg.parse() ); - BOOST_CHECK_EQUAL( var1, 0 ); - BOOST_CHECK_EQUAL( var2, true ); - } -} + TempFile cfg ("test.cfg"); + cfg << "dir1/fun1 foo; fun2;" << TempFile::close; -BOOST_AUTO_UNIT_TEST(configFileSkipGroup) -{ - TempFile cfgf ("test.cfg"); - cfgf << "dir1/fun1 10;\n" - << "dir2 { dir3 { fun2; } fun1 5; }" - << TempFile::close; - - senf::console::ScopedDirectory<> dir1; - senf::console::root().add("dir1", dir1); - dir1.add("fun1",&fun1); - - senf::console::ScopedDirectory<> dir2; - senf::console::root().add("dir2", dir2); - - dir2.mkdir("dir3").add("fun2", &fun2); - dir2.add("fun1", &fun1); + char * argv[] = { "", "--dir1-fun1=bar" }; - { - var1 = 0; - var2 = false; - senf::console::ConfigFile cfg (cfgf.name()); - SENF_CHECK_NO_THROW( cfg.parse(dir1.node()) ); - BOOST_CHECK_EQUAL( var1, 10 ); - BOOST_CHECK_EQUAL( var2, false ); - - var1 = 0; - var2 = false; - SENF_CHECK_NO_THROW( cfg.parse(dir2["dir3"]) ); - BOOST_CHECK_EQUAL( var1, 0 ); - BOOST_CHECK_EQUAL( var2, true ); - - var1 = 0; - var2 = false; - SENF_CHECK_NO_THROW( cfg.parse() ); - BOOST_CHECK_EQUAL( var1, 5 ); - BOOST_CHECK_EQUAL( var2, false ); - } + senf::console::ConfigBundle bundle(root); + bundle.add( senf::console::FileConfig(cfg.name()) ); + bundle.add( senf::console::OptionsConfig(sizeof(argv)/sizeof(argv[0]), argv) ); + + SENF_CHECK_NO_THROW( bundle.parse() ); + BOOST_CHECK_EQUAL( val1, "bar" ); + BOOST_CHECK_EQUAL( val2, true ); } ///////////////////////////////cc.e////////////////////////////////////////