1 #ifndef CPPUNIT_EXTENSIONS_TESTDECORATOR_H
2 #define CPPUNIT_EXTENSIONS_TESTDECORATOR_H
3 
4 #include <cppunit/Portability.h>
5 #include <cppunit/Test.h>
6 
7 CPPUNIT_NS_BEGIN
8 
9 
10 class TestResult;
11 
12 
13 /*! \brief  Decorator for Tests.
14  *
15  * TestDecorator provides an alternate means to extend functionality
16  * of a test class without subclassing the test.  Instead, one can
17  * subclass the decorater and use it to wrap the test class.
18  *
19  * Assumes ownership of the test it decorates
20  */
21 class CPPUNIT_API TestDecorator : public Test
22 {
23 public:
24   TestDecorator( Test *test );
25   ~TestDecorator();
26 
27   int countTestCases() const;
28 
29   std::string getName() const;
30 
31   void run( TestResult *result );
32 
33   int getChildTestCount() const;
34 
35 protected:
36   Test *doGetChildTestAt( int index ) const;
37 
38   Test *m_test;
39 
40 private:
41   TestDecorator( const TestDecorator &);
42   void operator =( const TestDecorator & );
43 };
44 
45 
46 CPPUNIT_NS_END
47 
48 #endif
49 
50