diff --git a/src/tests/config.cpp b/src/tests/config.cpp index d9e344f04ea7b0809d5f3d45e46ce0d2acb7a390..2f52467770f404611f7c563db07cc07e3e13e4ed 100644 --- a/src/tests/config.cpp +++ b/src/tests/config.cpp @@ -24,7 +24,10 @@ 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_SUITE_END(); public: @@ -35,6 +38,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 +55,20 @@ 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")); + } + }; CPPUNIT_TEST_SUITE_REGISTRATION (ConfigTest);