|
From: <bl...@us...> - 2003-03-15 21:18:46
|
Update of /cvsroot/cpptool/rfta/src/rfta
In directory sc8-pr-cvs1:/tmp/cvs-serv3190/src/rfta
Modified Files:
CodeRewriter.cpp CodeWriterTest.cpp CodeWriterTest.h
Log Message:
* added support for inserting continue, break, default and case statements.
Index: CodeRewriter.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeRewriter.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** CodeRewriter.cpp 15 Mar 2003 20:57:38 -0000 1.8
--- CodeRewriter.cpp 15 Mar 2003 21:18:44 -0000 1.9
***************
*** 97,100 ****
--- 97,102 ----
CodeRewriter::visit( BreakStatement &statement )
{
+ if ( isInserting() )
+ insertText( "\n" + indentManager_.getIndentSpacer() + "break;" );
}
***************
*** 103,106 ****
--- 105,114 ----
CodeRewriter::visit( CaseStatement &statement )
{
+ if ( isInserting() )
+ {
+ insertText( "\n" + indentManager_.getIndentSpacer() + "case " );
+ statement.getConditionValue()->accept( *this );
+ insertText( ":" );
+ }
}
***************
*** 159,162 ****
--- 167,172 ----
CodeRewriter::visit( ContinueStatement &statement )
{
+ if ( isInserting() )
+ insertText( "\n" + indentManager_.getIndentSpacer() + "continue;" );
}
***************
*** 165,168 ****
--- 175,180 ----
CodeRewriter::visit( DefaultStatement &statement )
{
+ if ( isInserting() )
+ insertText( "\n" + indentManager_.getIndentSpacer() + "default:" );
}
Index: CodeWriterTest.cpp
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** CodeWriterTest.cpp 15 Mar 2003 20:57:38 -0000 1.10
--- CodeWriterTest.cpp 15 Mar 2003 21:18:44 -0000 1.11
***************
*** 69,73 ****
CodeWriterTest::makeTrueExpression()
{
! return CodeModel::ExpressionPtr( new CodeModel::GenericExpression( "true" ) );
}
--- 69,80 ----
CodeWriterTest::makeTrueExpression()
{
! return makeExpression( "true" );
! }
!
!
! CodeModel::ExpressionPtr
! CodeWriterTest::makeExpression( const std::string &expression )
! {
! return CodeModel::ExpressionPtr( new CodeModel::GenericExpression( expression ) );
}
***************
*** 250,253 ****
--- 257,348 ----
" ;\n"
" }\n"
+ "}";
+ RFTA_ASSERT_EQUAL( expectedSource, document_->getAllText() );
+ }
+
+
+ void
+ CodeWriterTest::testInsertContinueStatement()
+ {
+ source_ = "{\n"
+ "}";
+
+ generateCompound();
+
+ RFTA_ASSERT_EQUAL( 0, compound_->getStatementCount() );
+
+ CodeModel::StatementPtr continueStatement( new CodeModel::ContinueStatement() );
+ compound_->appendStatement( continueStatement );
+
+ rewriteSource();
+
+ std::string expectedSource = "{\n"
+ " continue;\n"
+ "}";
+ RFTA_ASSERT_EQUAL( expectedSource, document_->getAllText() );
+ }
+
+
+ void
+ CodeWriterTest::testInsertBreakStatement()
+ {
+ source_ = "{\n"
+ "}";
+
+ generateCompound();
+
+ RFTA_ASSERT_EQUAL( 0, compound_->getStatementCount() );
+
+ CodeModel::StatementPtr breakStatement( new CodeModel::BreakStatement() );
+ compound_->appendStatement( breakStatement );
+
+ rewriteSource();
+
+ std::string expectedSource = "{\n"
+ " break;\n"
+ "}";
+ RFTA_ASSERT_EQUAL( expectedSource, document_->getAllText() );
+ }
+
+
+ void
+ CodeWriterTest::testInsertDefaultStatement()
+ {
+ source_ = "{\n"
+ "}";
+
+ generateCompound();
+
+ RFTA_ASSERT_EQUAL( 0, compound_->getStatementCount() );
+
+ CodeModel::StatementPtr defaultStatement( new CodeModel::DefaultStatement() );
+ compound_->appendStatement( defaultStatement );
+
+ rewriteSource();
+
+ std::string expectedSource = "{\n"
+ " default:\n"
+ "}";
+ RFTA_ASSERT_EQUAL( expectedSource, document_->getAllText() );
+ }
+
+
+ void
+ CodeWriterTest::testInsertCaseStatement()
+ {
+ source_ = "{\n"
+ "}";
+
+ generateCompound();
+
+ RFTA_ASSERT_EQUAL( 0, compound_->getStatementCount() );
+
+ CodeModel::StatementPtr caseStatement( new CodeModel::CaseStatement( makeExpression( "1234" ) ) );
+ compound_->appendStatement( caseStatement );
+
+ rewriteSource();
+
+ std::string expectedSource = "{\n"
+ " case 1234:\n"
"}";
RFTA_ASSERT_EQUAL( expectedSource, document_->getAllText() );
Index: CodeWriterTest.h
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** CodeWriterTest.h 15 Mar 2003 20:57:38 -0000 1.7
--- CodeWriterTest.h 15 Mar 2003 21:18:44 -0000 1.8
***************
*** 28,31 ****
--- 28,35 ----
CPPUNIT_TEST( testInsertNullStatement );
CPPUNIT_TEST( testInsertWhileStatement );
+ CPPUNIT_TEST( testInsertContinueStatement );
+ CPPUNIT_TEST( testInsertBreakStatement );
+ CPPUNIT_TEST( testInsertDefaultStatement );
+ CPPUNIT_TEST( testInsertCaseStatement );
CPPUNIT_TEST_SUITE_END();
***************
*** 48,51 ****
--- 52,59 ----
void testInsertNullStatement();
void testInsertWhileStatement();
+ void testInsertContinueStatement();
+ void testInsertBreakStatement();
+ void testInsertDefaultStatement();
+ void testInsertCaseStatement();
private:
***************
*** 53,56 ****
--- 61,65 ----
void rewriteSource();
CodeModel::ExpressionPtr makeTrueExpression();
+ CodeModel::ExpressionPtr makeExpression( const std::string &expression );
CodeModel::CompoundStatementPtr compound_;
|