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_; |