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