/** @file
$ Id $
$ Date $
$ Author $
@ copy & copy ; Marc W & auml ; ckerlin
@ license LGPL , see file < a href = " license.html " > COPYING < / a >
$ 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 <mrw/configfile.hxx>
# include <mrw/file.hxx>
# include <mrw/stdext.hxx> // ifelse
# include <cppunit/TestFixture.h>
# include <cppunit/ui/text/TestRunner.h>
# include <cppunit/extensions/HelperMacros.h>
# include <cppunit/extensions/TestFactoryRegistry.h>
# include <cppunit/XmlOutputter.h>
# include <fstream>
# include <stdlib.h> // 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: " < < e . what ( ) < < std : : endl ;
return 1 ;
}