/** @file
$Id$
$Date$
$Author$
@copy © Marc Wäckerlin
@license LGPL, see file COPYING
$Log$
Revision 1.2 2005/04/07 20:55:21 marc
Oops, there's a make distcheck...? Now it works.
Revision 1.1 2005/01/07 00:31:38 marc
initial version
*/
#include
#include
#include // ifelse
#include
#include
#include
#include
#include
#include
#include // getenv
class ConfigFileTest: public CppUnit::TestFixture {
public:
void CheckFile() {
std::string srcdir(mrw::ifelse(getenv("srcdir"), "."));
mrw::File::copy(srcdir+"/configfile.ini", "configfile2.ini");
mrw::ConfigFileWriter config("configfile2.ini");
CPPUNIT_ASSERT_EQUAL(std::string("yyy"), config("", "xxx", ".")());
CPPUNIT_ASSERT_EQUAL(std::string(), config("Section", "abc", ".")());
CPPUNIT_ASSERT_EQUAL(std::string("hallo welt"),
config("Section", "def", ".")());
CPPUNIT_ASSERT_EQUAL(std::string(), config("Section", "ghi", ".")());
CPPUNIT_ASSERT_EQUAL(std::string("mn\n op qr\n st"),
config("Section", "jkl", ".")());
CPPUNIT_ASSERT_EQUAL(std::string("5678=90"),
config("Other Section", "1234", ".")());
CPPUNIT_ASSERT_EQUAL(std::string("some contents"),
config("Other Section", "here we are", ".")());
CPPUNIT_ASSERT_EQUAL(std::string(), config("Other Section", "here", ".")());
config("", "xxx", ".")="0";
config("Section", "abc", ".")="1";
CPPUNIT_ASSERT_EQUAL(std::string("sgadd"),
config("New Section", "a first one", "sgadd")());
config("Section", "def", ".")="Und=Tschuess";
config("Section", "ghi", ".")="3";
config("Section", "jkl", ".")="4";
config("Other Section", "1234", ".")="5";
config("Other Section", "here we are", ".")="6";
config("Other Section", "here", ".")="7";
CPPUNIT_ASSERT_EQUAL(std::string("."),
config("Other Section", "no no", ".")());
CPPUNIT_ASSERT_EQUAL(std::string("."),
config("Other Section", "no no no", ".")());
CPPUNIT_ASSERT_EQUAL(std::string("."),
config("Other Section", "yes", ".")());
CPPUNIT_ASSERT_EQUAL(std::string("dadaa"),
config("Section", "guguseli", "dadaa")());
CPPUNIT_ASSERT_EQUAL(std::string("dadaa"),
config("Section", "guguseli zwei", "dadaa")());
CPPUNIT_ASSERT_EQUAL(std::string("dadaa"),
config("Section", "guguseli drei", "dadaa")());
CPPUNIT_ASSERT_EQUAL(std::string("."),
config("New Section", "one more", ".")());
}
CPPUNIT_TEST_SUITE(ConfigFileTest);
CPPUNIT_TEST(CheckFile);
CPPUNIT_TEST_SUITE_END();
};
CPPUNIT_TEST_SUITE_REGISTRATION(ConfigFileTest);
int main(int argc, char** argv) try {
std::ofstream ofs((*argv+std::string(".xml")).c_str());
CppUnit::TextUi::TestRunner runner;
runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
return runner.run() ? 0 : 1;
} catch (std::exception& e) {
std::cerr<<"***Exception: "<