'Made by bloodchen 'bloodchen@hotmail.com Sub NewTestClass On Error Resume Next dim proj_path,ext,pos,proj_dir,MyCppFile,MyCppName,MyHFile,MyHName,ClassName,HText,CPPText proj_path = ActiveProject.fullname ext = "" pos = len (proj_path) Do While ext <> "\" ext = Mid(proj_path, pos, 1) pos = pos -1 Loop proj_dir = left(proj_path, pos+1) ClassName=InputBox("Enter the class name:", "Class Name") if ActiveProject.Type <> "Build" then MsgBox "This project is not valid. Ending macro." Exit Sub end if if (len(ClassName) <= 0) then MsgBox "Invalid class name. Ending macro." Exit Sub end if ' ClassName="CTest" MyCppName=proj_dir+ClassName+".cpp" MyHName=proj_dir+ClassName+".h" ActiveProject.AddFile MyCppName ActiveProject.AddFile MyHName Documents.Add "Text" ActiveDocument.Selection.StartOfDocument HText= "#ifndef "+ClassName+"DEF"+VbCrLf& _ "#define "+ClassName+"DEF"+VbCrLf& _ ""+VbCrLf& _ "#include "+VbCrLf& _ "#include "+VbCrLf& _ "class "+ClassName+":public CppUnit::TestCase"+VbCrLf& _ "{"+VbCrLf& _ " CPPUNIT_TEST_SUITE( "+ClassName+" );"+VbCrLf& _ " CPPUNIT_TEST_SUITE_END();"+VbCrLf& _ "public:"+VbCrLf& _ " "+ClassName+"();"+VbCrLf& _ " virtual ~"+ClassName+"();"+VbCrLf& _ "};"+VbCrLf& _ "#endif"+VbCrLf ActiveDocument.Selection = HText ActiveDocument.Save MyHName ' WriteFile MyHName,HText Documents.Add "Text" ActiveDocument.Selection.StartOfDocument CPPText = "#include "+chr(34)+"stdafx.h"+chr(34)+VbCrLf& _ "#include "+chr(34)+ClassName+".h"+chr(34)+VbCrLf& _ ""+VbCrLf& _ ""+VbCrLf& _ "CPPUNIT_TEST_SUITE_REGISTRATION( "+ClassName+ " );"+VbCrLf& _ ""+VbCrLf& _ ""+VbCrLf& _ ClassName+"::"+ClassName+"()"+VbCrLf& _ "{"+VbCrLf& _ "}"+VbCrLf& _ ""+VbCrLf& _ ""+VbCrLf& _ ClassName+"::~"+ClassName+"()"+VbCrLf& _ "{"+VbCrLf& _ "}" ' WriteFile MyCppName,CPPText ActiveDocument.Selection = CPPText ActiveDocument.Save MyCppName End Sub Sub ToggleHandCPP() 'DESCRIPTION: Opens the .cpp or .h file for the current document. 'Toggles between the .cpp & .h file ext = ActiveDocument.FullName If ext = "" Then msgbox ("Error, not a .cpp or .h file") exit sub End If DocName = UCase(ext) If Right(DocName,4) = ".CPP" Then fn = left(DocName, Len(DocName)-3) & "h" ElseIf Right(DocName,2) = ".H" Then fn = Left(DocName, Len(DocName)-1) & "cpp" Else msgbox ("Error, not a .cpp or a .h file") exit sub End If 'msgbox (fn) on error resume next Documents.Open (fn) End Sub Sub ADDTestMethod() strHpt = ActiveDocument.FullName if right(strHpt,3) = "CPP" Or right (strHpt,3) = "cpp" Then ActiveDocument.Selection.SelectLine strText = ActiveDocument.Selection.Text if (Instr(strText, "::" ) = 0) Then MsgBox("Line not valid !!") Exit Sub End If else exit sub end if pos = Instr(strText, "::") strName = Right(strText, (Len(strText) - (pos+1))) pos = Instr(strName,"(") strName = Left(strName,pos-1) strClass = Left(strText,pos - 1) while (instr(strClass, " ") > 0) pos = instr(strClass, " ") strTyp = strTyp & Left(strClass, pos) strClass = Right(strClass, Len(strClass) - (pos) ) wend ToggleHandCPP ActiveDocument.Selection.SelectAll strHead = ActiveDocument.Selection.Text if (instr(strHead,strClass) = 0) Then MsgBox(" Can't find class " & strClass & " !!") ToggleHandCPP Exit Sub End If ActiveDocument.Selection.EndOfDocument lineBottom = ActiveDocument.Selection.CurrentLine ActiveDocument.Selection.StartOfDocument ActiveDocument.Selection.StartOfLine ActiveDocument.Selection.SelectLine strLine = ActiveDocument.Selection.Text while (instr(strLine, strName) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom) ActiveDocument.Selection.StartOfLine ActiveDocument.Selection.LineDown dsMove ActiveDocument.Selection.SelectLine strLine = ActiveDocument.Selection.Text Wend if (ActiveDocument.Selection.CurrentLine < lineBottom) Then if( instr(strLine, "CPPUNIT_TEST" ) <> 0 )Then ToggleHandCPP Exit Sub end if End If ActiveDocument.Selection.StartOfDocument ActiveDocument.Selection.StartOfLine ActiveDocument.Selection.SelectLine strLine = ActiveDocument.Selection.Text while (instr(strLine, " CPPUNIT_TEST_SUITE_END();" ) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom) ActiveDocument.Selection.StartOfLine ActiveDocument.Selection.LineDown dsMove ActiveDocument.Selection.SelectLine strLine = ActiveDocument.Selection.Text Wend if (ActiveDocument.Selection.CurrentLine < lineBottom) Then ActiveDocument.Selection.EndOfLine ActiveDocument.Selection.LineUp ActiveDocument.Selection.EndOfLine ActiveDocument.Selection.NewLine ActiveDocument.Selection = "CPPUNIT_TEST( "&strName&" );" else MsgBox("CPPUNIT_TEST_SUITE_END not found") end if ToggleHandCPP End Sub