From: <net...@us...> - 2003-04-28 11:08:43
|
Update of /cvsroot/cpptool/rfta/src/rftaparser In directory sc8-pr-cvs1:/tmp/cvs-serv11396/src/rftaparser Added Files: ParserToolsTest.h ParserToolsTest.cpp Log Message: -- tests for parser tools --- NEW FILE: ParserToolsTest.h --- // ////////////////////////////////////////////////////////////////////////// // Header file ParserToolsTest.h for class ParserToolsTest // (c)Copyright 2003, Andre Baresel // Created: 2003/04/28 // ////////////////////////////////////////////////////////////////////////// #ifndef RFTA_PARSERTOOLSTEST_H #define RFTA_PARSERTOOLSTEST_H #include "UnitTesting.h" #include <rfta/parser/ParserTools.h> namespace Refactoring { /// Unit tests for ParserToolsTest class ParserToolsTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE( ParserToolsTest ); CPPUNIT_TEST( testTryReadIdentifier ); CPPUNIT_TEST( testTryReadKeyword ); CPPUNIT_TEST_SUITE_END(); public: /*! Constructs a ParseContextTest object. */ ParserToolsTest(); /// Destructor. virtual ~ParserToolsTest(); void setUp(); void tearDown(); void testTryReadIdentifier(); void testTryReadKeyword(); private: /// Prevents the use of the copy constructor. ParserToolsTest( const ParserToolsTest &other ); /// Prevents the use of the copy operator. void operator =( const ParserToolsTest &other ); private: }; // Inlines methods for ParserToolsTest: // ------------------------------------- } // namespace Refactoring #endif // RFTA_PARSERTOOLSTEST_H --- NEW FILE: ParserToolsTest.cpp --- // ////////////////////////////////////////////////////////////////////////// // Implementation file ParserToolsTest.cpp for class ParserToolsTest // (c)Copyright 2003, Andre Baresel. // Created: 2003/04/28 // ////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "ParserToolsTest.h" namespace Refactoring { RFTAPARSER_TEST_SUITE_REGISTRATION( ParserToolsTest ); ParserToolsTest::ParserToolsTest() { } ParserToolsTest::~ParserToolsTest() { } void ParserToolsTest::setUp() { } void ParserToolsTest::tearDown() { } void ParserToolsTest::testTryReadIdentifier() { const char * textbeg = "this * is a test"; const char * textend = textbeg + strlen(textbeg); Xtl::CStringView cv ( textbeg, textend ); Xtl::CStringView ident; Xtl::CStringEnumerator en = cv.enumerate(); CPPUNIT_ASSERT( ParserTools::tryReadIdentifier( en, ident ) ); CPPUNIT_ASSERT( ident.str() == "this" ); en = Xtl::CStringEnumerator( Xtl::CStringView( en.getCurrentPos()+1, textend ).enumerate() ); CPPUNIT_ASSERT( !ParserTools::tryReadIdentifier( en , ident ) ); en = Xtl::CStringEnumerator( Xtl::CStringView( en.getCurrentPos()+2, textend ).enumerate() ); CPPUNIT_ASSERT( ParserTools::tryReadIdentifier( en, ident ) ); CPPUNIT_ASSERT( ident.str() == "is" ); en = Xtl::CStringEnumerator( Xtl::CStringView( en.getCurrentPos()+1, textend ).enumerate() ); CPPUNIT_ASSERT( ParserTools::tryReadIdentifier( en, ident ) ); CPPUNIT_ASSERT( ident.str() == "a" ); } void ParserToolsTest::testTryReadKeyword() { const char * textbeg = "this * is a test"; const char * textend = textbeg + strlen(textbeg); Xtl::CStringView cv ( textbeg, textend ); std::set< std::string > keywords; keywords.insert("do"); keywords.insert("you"); keywords.insert("want"); keywords.insert("this"); // check keyword "this" Xtl::CStringEnumerator en = cv.enumerate(); std::string ident = ParserTools::tryReadKeyword( en, keywords ); CPPUNIT_ASSERT( ident == "this" ); // check non an identifier en = Xtl::CStringEnumerator( Xtl::CStringView( en.getCurrentPos(), textend ).enumerate() ); ident = ParserTools::tryReadKeyword( en, keywords ); CPPUNIT_ASSERT( ident.empty() ); // check not registered en = Xtl::CStringEnumerator( Xtl::CStringView( en.getCurrentPos()+3, textend ).enumerate() ); ident = ParserTools::tryReadKeyword( en, keywords ); CPPUNIT_ASSERT( ident.empty() ); } } // namespace Refactoring |