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