Update of /cvsroot/cpptool/rfta/src/rfta In directory sc8-pr-cvs1:/tmp/cvs-serv11028/src/rfta Modified Files: CodeRewriter.cpp CodeWriterTest.cpp CodeWriterTest.h IndentLevelManager.cpp IndentLevelManager.h Log Message: * added support for inserting if/then/else statement. Index: CodeRewriter.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeRewriter.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** CodeRewriter.cpp 16 Mar 2003 06:52:20 -0000 1.14 --- CodeRewriter.cpp 16 Mar 2003 06:59:06 -0000 1.15 *************** *** 269,273 **** --- 269,281 ---- statement.getThenStatement()->accept( *this ); if ( statement.hasElseStatement() ) + { + restorer.restoreIndentLevel(); + IndentLevelManager::IndentRestorer restorer2( indentManager_ ); + beginInsertNewStatement(); + insertText( "else" ); + if ( isInserting() ) + indentManager_.enterNewElseStatement(); statement.getElseStatement()->accept( *this ); + } } Index: CodeWriterTest.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.cpp,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** CodeWriterTest.cpp 16 Mar 2003 06:52:20 -0000 1.15 --- CodeWriterTest.cpp 16 Mar 2003 06:59:06 -0000 1.16 *************** *** 482,484 **** --- 482,514 ---- + void + CodeWriterTest::testInsertIfThenElseStatement() + { + source_ = "{\n" + "}"; + + generateCompound(); + + RFTA_ASSERT_EQUAL( 0, compound_->getStatementCount() ); + + CodeModel::StatementPtr nullStatement( new CodeModel::NullStatement() ); + CodeModel::StatementPtr breakStatement( new CodeModel::BreakStatement() ); + CodeModel::StatementPtr ifStatement( + new CodeModel::IfStatement( makeExpression( "z < k" ), + nullStatement, + breakStatement ) ); + compound_->appendStatement( ifStatement ); + + rewriteSource(); + + std::string expectedSource = "{\n" + " if ( z < k )\n" + " ;\n" + " else\n" + " break;\n" + "}"; + RFTA_ASSERT_EQUAL( expectedSource, document_->getAllText() ); + } + + } // namespace Refactoring Index: CodeWriterTest.h =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/CodeWriterTest.h,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** CodeWriterTest.h 16 Mar 2003 06:52:20 -0000 1.12 --- CodeWriterTest.h 16 Mar 2003 06:59:07 -0000 1.13 *************** *** 37,40 **** --- 37,41 ---- CPPUNIT_TEST( testInsertGotoStatement ); CPPUNIT_TEST( testInsertIfThenStatement ); + CPPUNIT_TEST( testInsertIfThenElseStatement ); CPPUNIT_TEST_SUITE_END(); *************** *** 66,69 **** --- 67,71 ---- void testInsertGotoStatement(); void testInsertIfThenStatement(); + void testInsertIfThenElseStatement(); private: Index: IndentLevelManager.cpp =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/IndentLevelManager.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** IndentLevelManager.cpp 16 Mar 2003 06:52:20 -0000 1.4 --- IndentLevelManager.cpp 16 Mar 2003 06:59:07 -0000 1.5 *************** *** 46,49 **** --- 46,56 ---- + void + IndentLevelManager::enterNewElseStatement() + { + pushIndent( getIndentLevel() + indentWidth_ ); + } + + int IndentLevelManager::findIndentLevelOf( int pos ) const Index: IndentLevelManager.h =================================================================== RCS file: /cvsroot/cpptool/rfta/src/rfta/IndentLevelManager.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** IndentLevelManager.h 16 Mar 2003 06:52:20 -0000 1.5 --- IndentLevelManager.h 16 Mar 2003 06:59:07 -0000 1.6 *************** *** 62,65 **** --- 62,67 ---- void enterNewIfStatement(); + void enterNewElseStatement(); + int getIndentLevel() const; |