1 #ifndef  __cxxtest__TeeListener_h__
2 #define  __cxxtest__TeeListener_h__
3 
4 //
5 // A TeeListener notifies two "reular" TestListeners
6 //
7 
8 #include <cxxtest/TestListener.h>
9 #include <cxxtest/TestListener.h>
10 
11 namespace CxxTest {
12   class TeeListener : public TestListener {
13     public:
TeeListener()14     TeeListener() {
15       setFirst( _dummy );
16       setSecond( _dummy );
17     }
18 
~TeeListener()19     virtual ~TeeListener() {}
20 
setFirst(TestListener & first)21     void setFirst( TestListener& first ) { _first = &first; }
22 
setSecond(TestListener & second)23     void setSecond( TestListener& second ) { _second = &second; }
24 
enterWorld(const WorldDescription & d)25     void enterWorld( const WorldDescription& d ) {
26       _first->enterWorld( d );
27       _second->enterWorld( d );
28     }
29 
enterSuite(const SuiteDescription & d)30     void enterSuite( const SuiteDescription& d ) {
31       _first->enterSuite( d );
32       _second->enterSuite( d );
33     }
34 
enterTest(const TestDescription & d)35     void enterTest( const TestDescription& d ) {
36       _first->enterTest( d );
37       _second->enterTest( d );
38     }
39 
trace(const char * file,unsigned line,const char * expression)40     void trace( const char* file, unsigned line, const char* expression ) {
41       _first->trace( file, line, expression );
42       _second->trace( file, line, expression );
43     }
44 
warning(const char * file,unsigned line,const char * expression)45     void warning( const char* file, unsigned line, const char* expression ) {
46       _first->warning( file, line, expression );
47       _second->warning( file, line, expression );
48     }
49 
failedTest(const char * file,unsigned line,const char * expression)50     void failedTest( const char* file, unsigned line, const char* expression ) {
51       _first->failedTest( file, line, expression );
52       _second->failedTest( file, line, expression );
53     }
54 
55     void
failedAssert(const char * file,unsigned line,const char * expression)56     failedAssert( const char* file, unsigned line, const char* expression ) {
57       _first->failedAssert( file, line, expression );
58       _second->failedAssert( file, line, expression );
59     }
60 
failedAssertEquals(const char * file,unsigned line,const char * xStr,const char * yStr,const char * x,const char * y)61     void failedAssertEquals( const char* file,
62                              unsigned line,
63                              const char* xStr,
64                              const char* yStr,
65                              const char* x,
66                              const char* y ) {
67       _first->failedAssertEquals( file, line, xStr, yStr, x, y );
68       _second->failedAssertEquals( file, line, xStr, yStr, x, y );
69     }
70 
failedAssertSameData(const char * file,unsigned line,const char * xStr,const char * yStr,const char * sizeStr,const void * x,const void * y,unsigned size)71     void failedAssertSameData( const char* file,
72                                unsigned line,
73                                const char* xStr,
74                                const char* yStr,
75                                const char* sizeStr,
76                                const void* x,
77                                const void* y,
78                                unsigned size ) {
79       _first->failedAssertSameData(
80           file, line, xStr, yStr, sizeStr, x, y, size );
81       _second->failedAssertSameData(
82           file, line, xStr, yStr, sizeStr, x, y, size );
83     }
84 
failedAssertDelta(const char * file,unsigned line,const char * xStr,const char * yStr,const char * dStr,const char * x,const char * y,const char * d)85     void failedAssertDelta( const char* file,
86                             unsigned line,
87                             const char* xStr,
88                             const char* yStr,
89                             const char* dStr,
90                             const char* x,
91                             const char* y,
92                             const char* d ) {
93       _first->failedAssertDelta( file, line, xStr, yStr, dStr, x, y, d );
94       _second->failedAssertDelta( file, line, xStr, yStr, dStr, x, y, d );
95     }
96 
failedAssertDiffers(const char * file,unsigned line,const char * xStr,const char * yStr,const char * value)97     void failedAssertDiffers( const char* file,
98                               unsigned line,
99                               const char* xStr,
100                               const char* yStr,
101                               const char* value ) {
102       _first->failedAssertDiffers( file, line, xStr, yStr, value );
103       _second->failedAssertDiffers( file, line, xStr, yStr, value );
104     }
105 
failedAssertLessThan(const char * file,unsigned line,const char * xStr,const char * yStr,const char * x,const char * y)106     void failedAssertLessThan( const char* file,
107                                unsigned line,
108                                const char* xStr,
109                                const char* yStr,
110                                const char* x,
111                                const char* y ) {
112       _first->failedAssertLessThan( file, line, xStr, yStr, x, y );
113       _second->failedAssertLessThan( file, line, xStr, yStr, x, y );
114     }
115 
failedAssertLessThanEquals(const char * file,unsigned line,const char * xStr,const char * yStr,const char * x,const char * y)116     void failedAssertLessThanEquals( const char* file,
117                                      unsigned line,
118                                      const char* xStr,
119                                      const char* yStr,
120                                      const char* x,
121                                      const char* y ) {
122       _first->failedAssertLessThanEquals( file, line, xStr, yStr, x, y );
123       _second->failedAssertLessThanEquals( file, line, xStr, yStr, x, y );
124     }
125 
failedAssertPredicate(const char * file,unsigned line,const char * predicate,const char * xStr,const char * x)126     void failedAssertPredicate( const char* file,
127                                 unsigned line,
128                                 const char* predicate,
129                                 const char* xStr,
130                                 const char* x ) {
131       _first->failedAssertPredicate( file, line, predicate, xStr, x );
132       _second->failedAssertPredicate( file, line, predicate, xStr, x );
133     }
134 
failedAssertRelation(const char * file,unsigned line,const char * relation,const char * xStr,const char * yStr,const char * x,const char * y)135     void failedAssertRelation( const char* file,
136                                unsigned line,
137                                const char* relation,
138                                const char* xStr,
139                                const char* yStr,
140                                const char* x,
141                                const char* y ) {
142       _first->failedAssertRelation( file, line, relation, xStr, yStr, x, y );
143       _second->failedAssertRelation( file, line, relation, xStr, yStr, x, y );
144     }
145 
failedAssertThrows(const char * file,unsigned line,const char * expression,const char * type,bool otherThrown)146     void failedAssertThrows( const char* file,
147                              unsigned line,
148                              const char* expression,
149                              const char* type,
150                              bool otherThrown ) {
151       _first->failedAssertThrows( file, line, expression, type, otherThrown );
152       _second->failedAssertThrows( file, line, expression, type, otherThrown );
153     }
154 
failedAssertThrowsNot(const char * file,unsigned line,const char * expression)155     void failedAssertThrowsNot( const char* file,
156                                 unsigned line,
157                                 const char* expression ) {
158       _first->failedAssertThrowsNot( file, line, expression );
159       _second->failedAssertThrowsNot( file, line, expression );
160     }
161 
leaveTest(const TestDescription & d)162     void leaveTest( const TestDescription& d ) {
163       _first->leaveTest( d );
164       _second->leaveTest( d );
165     }
166 
leaveSuite(const SuiteDescription & d)167     void leaveSuite( const SuiteDescription& d ) {
168       _first->leaveSuite( d );
169       _second->leaveSuite( d );
170     }
171 
leaveWorld(const WorldDescription & d)172     void leaveWorld( const WorldDescription& d ) {
173       _first->leaveWorld( d );
174       _second->leaveWorld( d );
175     }
176 
177     private:
178     TestListener* _first, *_second;
179     TestListener _dummy;
180   };
181 };
182 
183 #endif  //  __cxxtest__TeeListener_h__
184