diff --git a/src/tests/config.cpp b/src/tests/config.cpp index d9e344f04ea7b0809d5f3d45e46ce0d2acb7a390..24776a7437a5d9d61f390b28e41d4d99a8029649 100644 --- a/src/tests/config.cpp +++ b/src/tests/config.cpp @@ -24,7 +24,12 @@ using namespace Transport; class ConfigTest : public CPPUNIT_NS :: TestFixture{ CPPUNIT_TEST_SUITE(ConfigTest); + CPPUNIT_TEST(setStringTwice); CPPUNIT_TEST(updateBackendConfig); + CPPUNIT_TEST(unregisteredList); + CPPUNIT_TEST(unregisteredString); + CPPUNIT_TEST(unregisteredListAsString); + CPPUNIT_TEST(unregisteredStringAsList); CPPUNIT_TEST_SUITE_END(); public: @@ -35,6 +40,14 @@ class ConfigTest : public CPPUNIT_NS :: TestFixture{ } + void setStringTwice() { + char *argv[3] = {"binary", "--service.jids=localhost", NULL}; + Config cfg(2, argv); + std::istringstream ifs("service.jids = irc.freenode.org\n"); + cfg.load(ifs); + CPPUNIT_ASSERT_EQUAL(std::string("localhost"), CONFIG_STRING(&cfg, "service.jids")); + } + void updateBackendConfig() { Config cfg; CPPUNIT_ASSERT(!cfg.hasKey("registration.needPassword")); @@ -44,6 +57,35 @@ class ConfigTest : public CPPUNIT_NS :: TestFixture{ CPPUNIT_ASSERT_EQUAL(false, CONFIG_BOOL(&cfg, "registration.needPassword")); } + void unregisteredList() { + Config cfg; + std::istringstream ifs("service.irc_server = irc.freenode.org\nservice.irc_server=localhost\n"); + cfg.load(ifs); + CPPUNIT_ASSERT_EQUAL(2, (int) CONFIG_LIST(&cfg, "service.irc_server").size()); + } + + void unregisteredString() { + Config cfg; + std::istringstream ifs("service.irc_server = irc.freenode.org"); + cfg.load(ifs); + CPPUNIT_ASSERT_EQUAL(std::string("irc.freenode.org"), CONFIG_STRING(&cfg, "service.irc_server")); + } + + void unregisteredListAsString() { + Config cfg; + std::istringstream ifs("service.irc_server = irc.freenode.orgn\nservice.irc_server = irc2.freenode.org"); + cfg.load(ifs); + CPPUNIT_ASSERT_EQUAL(std::string(""), CONFIG_STRING_DEFAULTED(&cfg, "service.irc_server", "")); + } + + void unregisteredStringAsList() { + Config cfg; + std::istringstream ifs("service.irc_server = irc.freenode.org"); + cfg.load(ifs); + std::list list; + CPPUNIT_ASSERT_EQUAL(0, (int) CONFIG_LIST_DEFAULTED(&cfg, "service.irc_server", list).size()); + } + }; CPPUNIT_TEST_SUITE_REGISTRATION (ConfigTest);