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
|