Update of /cvsroot/cpptool/rfta/src/rftaparser
In directory sc8-pr-cvs1:/tmp/cvs-serv24589/src/rftaparser
Modified Files:
MiniParserTest.cpp MiniParserTest.h
Log Message:
* added 'at least one spaces parser': space
* added repeat parser
* added trivial callback mecanism using Boost.Function.
Index: MiniParserTest.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rftaparser/MiniParserTest.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** MiniParserTest.cpp 4 May 2003 18:19:28 -0000 1.1
--- MiniParserTest.cpp 4 May 2003 22:13:51 -0000 1.2
***************
*** 30,40 ****
int expectedEnd = -1 )
{
! if ( expectedEnd )
expectedEnd = text.length();
Xtl::ParseResult result = parse( text, parser );
failIf( !result.matched_, "parsing failed" );
! checkEquals( text.c_str(), result.matchStart_, "wrong match start" );
! checkEquals( text.c_str() + expectedEnd, result.matchEnd_ , "wrong match end" );
}
--- 30,41 ----
int expectedEnd = -1 )
{
! if ( expectedEnd == -1 )
expectedEnd = text.length();
Xtl::ParseResult result = parse( text, parser );
failIf( !result.matched_, "parsing failed" );
! const char *start = text.c_str();
! checkEquals( 0, result.matchStart_ - start, "wrong match start" );
! checkEquals( expectedEnd, result.matchEnd_ - start, "wrong match end" );
}
***************
*** 169,172 ****
--- 170,226 ----
RFTA_ASSERT_MINIPARSER_FAIL( "+", parser2 );
RFTA_ASSERT_MINIPARSER_FAIL( "", parser2 );
+ }
+
+
+ void
+ MiniParserTest::testParseRepeat()
+ {
+ const Xtl::MiniParser &parser = Xtl::makeRepeatParser( Xtl::StringMiniParser( "ab" ) );
+ RFTA_ASSERT_MINIPARSER_PASS( "", parser );
+ RFTA_ASSERT_MINIPARSER_PASS( "ab", parser );
+ RFTA_ASSERT_MINIPARSER_PASS( "ababababab", parser );
+ RFTA_ASSERT_MINIPARSER_PASS( "ababa", parser, 4 );
+
+ const Xtl::MiniParser &parser2 = Xtl::makeOnceOrMoreParser( Xtl::StringMiniParser( "ab" ) );
+ RFTA_ASSERT_MINIPARSER_FAIL( "", parser2 );
+ RFTA_ASSERT_MINIPARSER_PASS( "ab", parser2 );
+ RFTA_ASSERT_MINIPARSER_PASS( "ababababab", parser2 );
+ RFTA_ASSERT_MINIPARSER_PASS( "ababa", parser2, 4 );
+
+ const Xtl::MiniParser &parser3 = Xtl::makeRepeatParser( Xtl::StringMiniParser( "ab" ), 3 );
+ RFTA_ASSERT_MINIPARSER_FAIL( "", parser3 );
+ RFTA_ASSERT_MINIPARSER_FAIL( "ab", parser3 );
+ RFTA_ASSERT_MINIPARSER_PASS( "ababab", parser3 );
+ RFTA_ASSERT_MINIPARSER_PASS( "ababababa", parser3, 8 );
+ RFTA_ASSERT_MINIPARSER_FAIL( "ababa", parser3 );
+ }
+
+
+ void
+ MiniParserTest::testParseSpaces()
+ {
+ RFTA_ASSERT_MINIPARSER_PASS( " ", Xtl::spaces );
+ RFTA_ASSERT_MINIPARSER_PASS( " ", Xtl::spaces );
+ RFTA_ASSERT_MINIPARSER_FAIL( "", Xtl::spaces );
+ RFTA_ASSERT_MINIPARSER_FAIL( "a", Xtl::spaces );
+ RFTA_ASSERT_MINIPARSER_PASS( " a", Xtl::spaces, 2 );
+ }
+
+
+ namespace {
+ static Xtl::CStringView callback1Text;
+ static void callback1( const Xtl::CStringView &text )
+ {
+ callback1Text = text;
+ }
+ }
+
+ void
+ MiniParserTest::testParseCallback()
+ {
+ const Xtl::MiniParser &parser = Xtl::spaces>> Xtl::StringMiniParser( "ab" )[&callback1] >> Xtl::spaces;
+ const std::string text( " ab " );
+ RFTA_ASSERT_MINIPARSER_PASS( text, parser );
+ RFTA_ASSERT_EQUAL( "ab", callback1Text.str() );
}
Index: MiniParserTest.h
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rftaparser/MiniParserTest.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** MiniParserTest.h 4 May 2003 18:19:28 -0000 1.1
--- MiniParserTest.h 4 May 2003 22:13:51 -0000 1.2
***************
*** 25,28 ****
--- 25,31 ----
CPPUNIT_TEST( testParseOptional );
CPPUNIT_TEST( testParseAlternative );
+ CPPUNIT_TEST( testParseRepeat );
+ CPPUNIT_TEST( testParseSpaces );
+ CPPUNIT_TEST( testParseCallback );
CPPUNIT_TEST_SUITE_END();
***************
*** 49,52 ****
--- 52,61 ----
void testParseAlternative();
+
+ void testParseRepeat();
+
+ void testParseSpaces();
+
+ void testParseCallback();
private:
|