diff options
| author | Baptiste Lepilleur <gaiacrtn@free.fr> | 2001-09-30 13:45:33 +0000 |
|---|---|---|
| committer | Baptiste Lepilleur <gaiacrtn@free.fr> | 2001-09-30 13:45:33 +0000 |
| commit | c4d97b4d586fdae21a02aff7a02605ffd487b188 (patch) | |
| tree | 7da0ea8ed3bc5d751974f13f1d253d72726a3df3 /contrib/msvc | |
| parent | 2478fb88dfc5c0e1673d094b4cbd3a7fdf21b95b (diff) | |
| download | cppunit-c4d97b4d586fdae21a02aff7a02605ffd487b188.tar.gz | |
Contrib/msvc/CppUnit.
contrib/msvc/CppUnit.WWTpl: added, template for WorkSpace Whiz! to
create new classes and unit tests.
* doc/FAQ:
* INSTALL-WIN32.txt: moved FAQ from install-WIN32 to that file. Added
a generic question to hint at the helper macros.
* include/cppunit/extensions/HelperMacros.h: bug #464844, moved
declaration of ThisTestCaseFactory from CPPUNIT_TEST_SUITE_END to
CPPUNIT_TEST_SUITE where the Fixture class name is available from
the macro parameter.
Diffstat (limited to 'contrib/msvc')
| -rw-r--r-- | contrib/msvc/CppUnit.WWTpl | 486 | ||||
| -rw-r--r-- | contrib/msvc/readme.txt | 7 |
2 files changed, 493 insertions, 0 deletions
diff --git a/contrib/msvc/CppUnit.WWTpl b/contrib/msvc/CppUnit.WWTpl new file mode 100644 index 0000000..b148a06 --- /dev/null +++ b/contrib/msvc/CppUnit.WWTpl @@ -0,0 +1,486 @@ +Baptiste Lepilleur's template file. +(@)Copyright 2001, Baptiste Lepilleur <gaiacrtn@free.fr>. + + + +[-ExtractPath] +!!Memo +Extract the path from a full filename. +path is the filename we need to extract the path from. +returns: extracted path. +Algo: we iterates the filename from the end until we found a character '\'. +!!End + +!!Params +path @@(ProjectPath)@@ +!!End + +!!Code +Input path: "@@path@@" +!!Set index @@(Strlen @@path@@)@@ +!!// +!!Set finalpath +!!Label LoopExtractPath +!!Sub index 1 +!!If @@index@@ < 0 +!!Goto EndExtractPath +!!Endif +!!// +!!Set lastchar @@(StrSub @@path@@ @@index@@ 1)@@ +!!If @@lastchar@@ != "\" +!!Goto LoopExtractPath +!!Endif +!!// +!!Add index 1 +!!Set finalpath @@(StrSub @@path@@ 0 @@index@@)@@ +!!// +!!Label EndExtractPath +!!Return @@finalpath@@ +!!End + + + +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +[+01 Create Class in file] +!!Memo +Creates a new class in new files (.h/.cpp) and adds them to the project. +!!End + +!!Params +classname Ttr +parentclassname = +classdesc This class represents +objectkind Reference Object +hasserialize 0 +isrefobj 0 +inlinectordtor 0 +createfile 1 +isunittest 0 +!!End + +!!Dialog +<html><body> +Class name: <input type=text id=classname size=40><br> +Brief description: <input type=text id=classdesc size=68><br> +Object Kind: + <select name="Object Kind" id=objectkind> + <option>Default Value Object</option> + <option>Explicit Value Object</option> + <option>Reference Object</option> + </select><br> + +Parent class name: <input type=text id=parentclassname size=40><br> + +<input type=checkbox id=createfile> + Create a new file ? (otherwise Insert in current file).<br> +<br> +<input type=checkbox id=hasserialize> + Has: virtual void Serialize( CArchive &ar )<br> +<input type=checkbox id=isrefobj> + Is a reference counted object (inherit ERefObj)<br> +<input type=checkbox id=inlinectordtor> + Inline ctor/dtor, copy ctor/operator.<br> +<input type=checkbox id=isunittest> + Is a CppUnit unit test.<br> + +<!--Base filename: <input type=text id=classbasepath size=64><br> --> + + +<!--<p>Filename: <input type=file id=classhfn accept="*.h" size=40></p> --> +<!--<p>Filename: <input type=file id=classcppfn accept="*.h" size=40></p> --> +</body></html> +!!End + +!!Code +!!// Set variable that indicates the kind of object we are working on. +!!Set defvalobject 0 +!!If @@objectkind@@ == "Default Value Object" +!!Set defvalobject 1 +!!Endif +!!// +!!Set valobject 0 +!!If @@objectkind@@ == "Explicit Value Object" +!!Set valobject 1 +!!Endif +!!// +!!Set refobject 0 +!!If @@objectkind@@ == "Reference Object" +!!Set refobject 1 +!!Endif +!!// +!!// Set class filename (relative to dsp) +!!Set headerfn @@classname@@.h +!!Set implfn @@classname@@.cpp +!!Set headerdefine @@(String @@(Call -MakeHeaderDefined fn @@headerfn@@)@@:U)@@ +!!// +!!// hasparentclass indicates if a parent class has been defined. +!!Set hasparentclass 0 +!!If @@parentclassname@@ != = +!!Set hasparentclass 1 +!!Else +!!If @@isunittest@@ +!!Set parentclassname CppUnit::TestCase +!!Set hasparentclass 1 +!!Endif +!!Endif +!!// +!!// hasparent is set to 1 if the class has some parent (ERefObj or parentclass). +!!Set hasparent @@hasparentclass@@ +!!If @@isrefobj@@ +!!Set hasparent 1 +!!Endif +!!// +!!// +!!// All variables are set, we can now generates the class. +!!// +!!// +!!// +!!// +!!// ---------------------------------------------------------------------------- +!!// ------------------------------ header file --------------------------------- +!!// ---------------------------------------------------------------------------- +!!// +!!// +!!// +!!If @@createfile@@ +!!FileNew @@headerfn@@ dsp +!!Set headerpath @@(FilePath)@@ +// ////////////////////////////////////////////////////////////////////////// +// Header file @@headerfn@@ for class @@classname@@ +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: @@(Date "yyyy/MM/dd")@@ +// ////////////////////////////////////////////////////////////////////////// +#ifndef @@headerdefine@@ +#define @@headerdefine@@ +!!Else +// ////////////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////////////// +// Definition of class @@classname@@ +// ////////////////////////////////////////////////////////////////////////// +// ////////////////////////////////////////////////////////////////////////// +!!Endif +!!If @@hasparentclass@@ + +!!If @@isunittest@@ +#include <cppunit/extensions/HelperMacros.h> +!!Else +#include "@@parentclassname@@.h" +!!Endif +!!Endif + + +!!If @@isrefobj@@ +/*! Declare @@classname@@Ref as a reference pointer on @@classname@@. + */ +EDECL_REF( @@classname@@ ); + + + +!!Endif +/*! \class @@classname@@ + * \brief @@classdesc@@ + */ +class @@classname@@@@\ +!!// Write inherited class list (parent class first, then ERefObj if inherited). +!!If @@hasparent@@ + : @@\ +!!// xpos contains the indentation level for inheritance declarations... +!!GetPos xpos ypos +!!Sub xpos 1 +public @@\ +!!Else + +!!Endif +!!If @@hasparentclass@@ +@@parentclassname@@@@\ +!!If @@isrefobj@@ +, +@@(Call -MakeFiller filler " " count @@xpos@@)@@@@\ +public @@\ +!!Else + +!!Endif +!!Endif +!!If @@isrefobj@@ +ERefObj +!!Endif +{ +!!// +!!// +!!// ------------ Done with inheritance, declare the class body... ---------- +!!// +!!// +!!If @@isunittest@@ + CPPUNIT_TEST_SUITE( @@classname@@ ); + CPPUNIT_TEST( putTestMethodNameHere ); + CPPUNIT_TEST_SUITE_END(); + +!!Endif +public: +!!If !@@defvalobject@@ + /*! Constructs a @@classname@@ object. + */ + @@classname@@(); + +!!Endif +!!If @@valobject@@ + /*! Copy constructor. + * @param copy Object to copy. + */ + @@classname@@( const @@classname@@ © ); + +!!Endif + /// Destructor. + virtual ~@@classname@@(); +!!If @@valobject@@ + + /*! Copy operator. + * @param copy Object to copy. + * @return Reference on this object. + */ + @@classname@@ &operator =( const @@classname@@ © ); +!!Endif +!!If @@isunittest@@ + + void setUp(); + void tearDown(); +!!Endif +!!// Private for methods +!!If @@refobject@@ + +private: + /// Prevents the use of the copy constructor. + @@classname@@( const @@classname@@ © ); + + /// Prevents the use of the copy operator. + void operator =( const @@classname@@ © ); +!!Endif +!!// Private for member datas + +private: +}; + + + +!!If @@createfile@@ +// Inlines methods for @@classname@@:@@\ +!!GetPos xpos ypos +!!Sub xpos 4 + +// @@(Call -MakeFiller filler - count @@xpos@@)@@ +!!Endif //@@createfile@@ +!!If @@inlinectordtor@@ +!!If !@@defvalobject@@ + + +inline +@@classname@@::@@classname@@()@@\ +!!If @@hasparentclass@@ + : + @@parentclassname@@() +!!Else + +!!Endif +{ +} +!!Endif //!@@defvalobject@@ +!!If @@valobject@@ + + +inline +@@classname@@::@@classname@@( const @@classname@@ © )@@\ +!!If @@hasparentclass@@ + : + @@parentclassname@@( copy ) +!!Else + +!!Endif +!!Endif //@@valobject@@ + + +inline +@@classname@@::~@@classname@@() +{ +} +!!If @@valobject@@ + + +inline @@classname@@ & +@@classname@@::operator =( const @@classname@@ © ) +{ + + return *this; +} +!!Endif //@@valobject@@ +!!Endif //@@inlinectordtor@@ + + +!!If @@createfile@@ + +#endif // @@headerdefine@@ +!!FileSave +!!ProjectFileAdd +!!Endif +!!// +!!// +!!// +!!// ---------------------------------------------------------------------------- +!!// -------------------------- Implementation file ----------------------------- +!!// ---------------------------------------------------------------------------- +!!// +!!// +!!// +!!If @@createfile@@ +!!FileNew @@implfn@@ dsp +// ////////////////////////////////////////////////////////////////////////// +// Implementation file @@implfn@@ for class @@classname@@ +// (c)Copyright 2000, Baptiste Lepilleur. +// Created: @@(Date "yyyy/MM/dd")@@ +// ////////////////////////////////////////////////////////////////////////// + +#include "StdAfx.h" +#include "@@headerfn@@" +!!Else + + +// ////////////////////////////////////////////////////////////////////////// +// Implementation of class @@classname@@ +// ////////////////////////////////////////////////////////////////////////// +!!Endif +!!If @@isunittest@@ + +CPPUNIT_TEST_SUITE_REGISTRATION( @@classname@@ ); +!!Endif +!!If !@@inlinectordtor@@ +!!If !@@defvalobject@@ + + +@@classname@@::@@classname@@()@@\ +!!If @@hasparentclass@@ + : + @@parentclassname@@() +!!Else + +!!Endif +{ +} +!!Endif +!!If @@valobject@@ + + +@@classname@@::@@classname@@( const @@classname@@ © )@@\ +!!If @@hasparentclass@@ + : + @@parentclassname@@( copy ) +!!Else + +!!Endif +{ +} +!!Endif + + +@@classname@@::~@@classname@@() +{ +} +!!If @@valobject@@ + + +@@classname@@ & +@@classname@@::operator =( const @@classname@@ © ) +{ + + return *this; +} +!!Endif +!!Endif +!!If @@isunittest@@ + + +void +@@classname@@::setUp() +{ +} + + +void +@@classname@@::tearDown() +{ +} +!!Endif + +!!If @@createfile@@ +!!FileSave +!!ProjectFileAdd +!!//ExecuteCommand FileOpen "@@headerpath@@" +!!Endif +!!End + +--------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- +[-Dummy] +!!Code +!!End + +--------------------------------------------------------------------------------- +------------------------ [-MakeHeaderDefined] ------------------------------- +--------------------------------------------------------------------------------- +[-MakeHeaderDefined] +!!Memo +This template replace all occurences of '.' in the specified filename "fn" by '_'. +This is typically used to make the #ifndef at the beginning of header files. +Parameters: "fn" filename in which each occurence of '.' is replaced by '_'. +Returns: Transformed filename. +!!End + +!!Params +fn TestDoIt +!!End + +!!Code +!!Set result @@fn@@ +!!Label LoopMakeHeaderDefined +!!Set fn @@result@@ +!!// Check if there is any occurence left of '.' +!!Set index @@(StrFind @@fn@@ ".")@@ +!!If @@index@@ < 0 +!!Goto EndMakeHeaderDefined +!!Endif +!!// Replace occurences of '.' in fb by '_' and set to result. +!!Set result @@(StrSub @@fn@@ 0 @@index@@ )@@_ +!!Add index 1 +!!Set result @@result@@@@(StrSub @@fn@@ @@index@@)@@ +!!Goto LoopMakeHeaderDefined +!!Label EndMakeHeaderDefined +!!Return @@result@@ +!!End + +--------------------------------------------------------------------------------- +---------------------------- [-MakeFiller] ---------------------------------- +--------------------------------------------------------------------------------- +[-MakeFiller] +!!Memo +Make a string that contains "count" occurrence of "filler". +Parameters: "filler" String that is repeated. + "count" Number of times the "filler" is repeated. +Returns: A string that contains "count" times the string "filler". +!!End + +!!Params +filler - +count 10 +!!End + +!!Code +!!Set result +!!Label LoopMakerFiller +!!If @@count@@ > 0 +!!Set result @@result@@@@filler@@ +!!Sub count 1 +!!Goto LoopMakerFiller +!!Endif +!!Return @@result@@ +!!End
\ No newline at end of file diff --git a/contrib/msvc/readme.txt b/contrib/msvc/readme.txt new file mode 100644 index 0000000..2b91f78 --- /dev/null +++ b/contrib/msvc/readme.txt @@ -0,0 +1,7 @@ +What's in those files: + + * CppUnit.WWTpl: a template Workspace Whiz! which create a new class +and add the new files to the project. You can specify that the class is a +CppUnit testcase and all the macro will be defined to register the test case +and declare the test suite. Workspace Whiz! is an add-ins for VC++. It can +be found at: http://www.workspacewhiz.com/. |
