/** @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 / 01 / 07 00 : 35 : 17 marc
initial version
Revision 1.1 2004 / 12 / 17 16 : 26 : 58 marc
initial version
*/
# include <mrw/tokenizer.hpp>
# include <mrw/list.hpp>
# include <algorithm>
# include <cppunit/TestFixture.h>
# include <cppunit/ui/text/TestRunner.h>
# include <cppunit/extensions/HelperMacros.h>
# include <cppunit/extensions/TestFactoryRegistry.h>
class TokenizerTest : public CppUnit : : TestFixture {
public :
void CheckNonGreedy ( ) {
const std : : string aux [ ] = { " first " , " second " , " third " , " " , " fifth " } ;
std : : list < std : : string > a ( aux , aux + sizeof ( aux ) / sizeof ( std : : string ) ) , b ;
mrw : : Tokenizer token ( " first,second,third,,fifth " , false , " , " ) ;
while ( token ) b < < token ( ) ;
CPPUNIT_ASSERT ( equal ( a . begin ( ) , a . end ( ) , b . begin ( ) ) ) ;
}
void CheckGreedy ( ) {
const std : : string aux [ ] = { " Hello " , " world " , " here " , " I " , " am " } ;
std : : list < std : : string > a ( aux , aux + sizeof ( aux ) / sizeof ( std : : string ) ) , b ;
mrw : : Tokenizer token ( " Hello world, here I am! " , true , " \t \n ,.?! " ) ;
while ( token ) b < < token ( ) ;
CPPUNIT_ASSERT ( equal ( a . begin ( ) , a . end ( ) , b . begin ( ) ) ) ;
}
void CheckReset ( ) {
const std : : string aux [ ] = { " first " , " second " , " third " , " " , " fifth " } ;
std : : list < std : : string > a ( aux , aux + sizeof ( aux ) / sizeof ( std : : string ) ) , b ;
mrw : : Tokenizer token ( " first,second,third,,fifth " , false , " , " ) ;
while ( token ) b < < token ( ) ;
CPPUNIT_ASSERT ( equal ( a . begin ( ) , a . end ( ) , b . begin ( ) ) ) ;
const std : : string aux2 [ ] = { " a " , " b " , " c " , " d " , " e " } ;
std : : list < std : : string > a2 ( aux2 , aux2 + sizeof ( aux2 ) / sizeof ( std : : string ) ) ,
b2 , b3 ;
token . reset ( " a,b,c,d,e " ) ;
while ( token ) b2 < < token ( ) ;
CPPUNIT_ASSERT ( equal ( a2 . begin ( ) , a2 . end ( ) , b2 . begin ( ) ) ) ;
token . reset ( ) ;
while ( token ) b3 < < token ( ) ;
CPPUNIT_ASSERT ( equal ( a2 . begin ( ) , a2 . end ( ) , b3 . begin ( ) ) ) ;
}
CPPUNIT_TEST_SUITE ( TokenizerTest ) ;
CPPUNIT_TEST ( CheckNonGreedy ) ;
CPPUNIT_TEST ( CheckGreedy ) ;
CPPUNIT_TEST ( CheckReset ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
} ;
CPPUNIT_TEST_SUITE_REGISTRATION ( TokenizerTest ) ;
int main ( ) {
CppUnit : : TextUi : : TestRunner runner ;
runner . addTest ( CppUnit : : TestFactoryRegistry : : getRegistry ( ) . makeTest ( ) ) ;
return runner . run ( ) ? 0 : 1 ;
}