/** @file
$ Id $
$ Date $
$ Author $
@ copy & copy ; Marc W & auml ; ckerlin
@ license LGPL , see file < a href = " license.html " > COPYING < / a >
$ Log $
Revision 1.2 2004 / 12 / 16 13 : 09 : 31 marc
possibility to evaluate and extract sub expressions
Revision 1.1 2004 / 12 / 14 20 : 20 : 30 marc
initial version
*/
# include <mrw/regexp.hxx>
# include <mrw/exception.hxx>
# include <cppunit/TestFixture.h>
# include <cppunit/ui/text/TestRunner.h>
# include <cppunit/extensions/HelperMacros.h>
# include <cppunit/extensions/TestFactoryRegistry.h>
class RegExpTest : public CppUnit : : TestFixture {
public :
void CheckRegExp ( ) {
mrw : : RegExp findHalloWelt ( " ^Hallo.*Welt$ " ) ;
CPPUNIT_ASSERT ( findHalloWelt ( " Hallo Meine Welt " ) ) ;
CPPUNIT_ASSERT ( ! findHalloWelt ( " xxx " ) ) ;
CPPUNIT_ASSERT ( ! findHalloWelt ( " " ) ) ;
CPPUNIT_ASSERT ( ! findHalloWelt ( " Hallo Welt " ) ) ;
CPPUNIT_ASSERT ( findHalloWelt ( " HalloWelt " ) ) ;
mrw : : RegExp extractTest ( " ^Guten (.*) (Herr|Frau) (.*)$ " , true ) ;
CPPUNIT_ASSERT ( extractTest ( " Guten Tag Frau Zuercher " ) ) ;
CPPUNIT_ASSERT ( extractTest [ 1 ] = = " Tag " & &
extractTest [ 2 ] = = " Frau " & &
extractTest [ 3 ] = = " Zuercher " ) ;
}
void ExceptionTest ( ) {
mrw : : RegExp extractTest ( " ^Guten (.*) (Herr|Frau) (.*)$ " , true ) ;
CPPUNIT_ASSERT ( extractTest ( " Guten Tag Herr Schweizer " ) ) ;
CPPUNIT_ASSERT ( extractTest [ 1 ] = = " Tag " & &
extractTest [ 2 ] = = " Herr " & &
extractTest [ 3 ] = = " Schweizer " ) ;
std : : string s = extractTest [ 4 ] ;
}
CPPUNIT_TEST_SUITE ( RegExpTest ) ;
CPPUNIT_TEST ( CheckRegExp ) ;
CPPUNIT_TEST_EXCEPTION ( ExceptionTest , mrw : : invalid_argument ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ;
CPPUNIT_TEST_SUITE_REGISTRATION ( RegExpTest ) ;
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 ;
}