[[TableOfContents]] 

= Objectives =

The CppUnit code base has grown into a monster and there are still many features that I would like to see added.

CppUnit2 is an attempt to propose a much cleaner implementation of the current features, and to follow good C++ practices.

The main objectives are:
 * use of smart-pointer for memory management
 * better support for custom test cases (repeat...) and parametrized test methods
 * flexible enough to allow sharing of a fixture across test cases (bad practice as it breaks test isolation, but may save a lot of time at execution if the setup is heavy).
 * better assertion support (equality testing, object conversion to string,...)
 * association of user data with test cases
 * thread support (passing assertion exceptions across threads, assertion...)
 * python binding

= Getting the sources =

CppUnit2 sources are finally available on CVS. You can obtain them as follows:
{{{
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/cppunit login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/cppunit co cppunit2
}}}

= Building =

CppUnit2 uses ["Scons"] as /BuildSystem. Python 1.5.2 or above is required to run ["Scons"]. Python is available at from http://www.python.org. 

Download an unpack the scons-local package (http://sourceforge.net/project/showfiles.php?group_id=30337&package_id=67375) into CppUnit2 top directory. {{{scons.py}}} should be at the same level as {{{sconstruct}}}.

Run the build from CppUnit2 top-directory with:
{{{
python scons.py platform=XYZ
}}}

Where XYZ is one of the following:
 * mingw : Win32 MinGW
 * suncc : Sun CC for Solaris 
 * vacpp : Visual Age C++
 * msvc6 : Microsoft Visual C++ 6 service pack 5
 * msvc70: Microsoft Visual Studio .NET 2002 (VC++ 7.0)
 * msvc71: Microsoft Visual Studio .NET 2003 (VC++ 7.1)
 * linux-gcc: GCC

The examples and unit test executables can be found in the {{{bin/}}} directory.

= Features =

 * ["/Assertions"]
 * /DescriptiveData
 * /ConvertToString
 * /EqualityTesting
 * /ParametrizedTestCase
 * /TestPlugIn
 * /SharedFixtureTestCase
 * /ThreadedTestCase
 * /InputBasedTestCase

= Other documentations =

 * /RoadMap
 * /CompilerRequirements
 * /BuildSystem
 * /MemoryManagement
 * /ThreadSafety
 * /UsingWithCppUnit1
 * /ImplementationOverview
 * IntegrationWithTestDrivingEnvironments

= Libraries provided with CppUnit2 =

  CppUnit2 depends on the following libraries which are developped for this project:

 * OpenTest: test driver and ouput generator
 * CppToolLibrary: tool library
