= Architecture =

The test hierarchy:

attachment:uml_test.gif

Main changes compared to CppUnit 1.x include the use of the visitor pattern, a reference to the parent test in each test, and the use of generic functors in test case implementation.

 == Visitor pattern to distinguish between test case and test suite ==
   It simplifies implementation, and gives much more flexibility to explore the test hierarchy...

 == Each test references its parent ==
   * Helps provide useful reports on failure (the full test suite path can be easily reported). 
   * Does not depend on execution order to track which test suite the test belongs to. 
   * Avoid the ugly hack in the test fixture to prepend the method name with the fixture class name to report the suite the test belongs to.

 == Generic Functor in test case implementation ==
   * Test setUp/tearDown and run can be implemented in any form (functor, C function, member function)
   * Parameters can be bound to the generic functor implementing setUp/tearDown and run, thereby allowing simple test parametrization.
