CppUnit project page FAQ CppUnit home page

Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

TestCaller.h

Go to the documentation of this file.
00001 #ifndef CPPUNIT_TESTCALLER_H    // -*- C++ -*-
00002 #define CPPUNIT_TESTCALLER_H
00003 
00004 #include <cppunit/Exception.h>
00005 #include <cppunit/TestCase.h>
00006 
00007 
00008 #if CPPUNIT_USE_TYPEINFO_NAME
00009 #  include <cppunit/extensions/TypeInfoHelper.h>
00010 #endif
00011 
00012 
00013 CPPUNIT_NS_BEGIN
00014 
00015 #if 0
00016 
00019 class CPPUNIT_API NoExceptionExpected
00020 {
00021 private:
00023   NoExceptionExpected();
00024 };
00025 
00026 
00031 template<class ExceptionType>
00032 struct ExpectedExceptionTraits
00033 {
00034   static void expectedException()
00035   {
00036 #if CPPUNIT_USE_TYPEINFO_NAME
00037     throw Exception( Message(
00038                          "expected exception not thrown",
00039                          "Expected exception type: " + 
00040                            TypeInfoHelper::getClassName( typeid( ExceptionType ) ) ) );
00041 #else
00042     throw Exception( "expected exception not thrown" );
00043 #endif
00044   }
00045 };
00046 
00047 
00053 template<>
00054 struct ExpectedExceptionTraits<NoExceptionExpected>
00055 {
00056   static void expectedException()
00057   {
00058   }
00059 };
00060 
00061 
00062 #endif
00063 
00064 //*** FIXME: rework this when class Fixture is implemented. ***//
00065 
00066 
00103 template <class Fixture>
00104 class TestCaller : public TestCase
00105 { 
00106   typedef void (Fixture::*TestMethod)();
00107     
00108 public:
00115   TestCaller( std::string name, TestMethod test ) :
00116             TestCase( name ), 
00117             m_ownFixture( true ),
00118             m_fixture( new Fixture() ),
00119             m_test( test )
00120   {
00121   }
00122 
00132   TestCaller(std::string name, TestMethod test, Fixture& fixture) :
00133             TestCase( name ), 
00134             m_ownFixture( false ),
00135             m_fixture( &fixture ),
00136             m_test( test )
00137   {
00138   }
00139     
00149   TestCaller(std::string name, TestMethod test, Fixture* fixture) :
00150             TestCase( name ), 
00151             m_ownFixture( true ),
00152             m_fixture( fixture ),
00153             m_test( test )
00154   {
00155   }
00156     
00157   ~TestCaller() 
00158   {
00159     if (m_ownFixture)
00160       delete m_fixture;
00161   }
00162 
00163   void runTest()
00164   { 
00165 //        try {
00166             (m_fixture->*m_test)();
00167 //        }
00168 //        catch ( ExpectedException & ) {
00169 //          return;
00170 //        }
00171 
00172 //      ExpectedExceptionTraits<ExpectedException>::expectedException();
00173   }  
00174 
00175   void setUp()
00176   { 
00177         m_fixture->setUp (); 
00178   }
00179 
00180   void tearDown()
00181   { 
00182           m_fixture->tearDown (); 
00183   }
00184 
00185   std::string toString() const
00186   { 
00187         return "TestCaller " + getName(); 
00188   }
00189 
00190 private: 
00191   TestCaller( const TestCaller &other ); 
00192   TestCaller &operator =( const TestCaller &other );
00193 
00194 private:
00195   bool m_ownFixture;
00196   Fixture *m_fixture;
00197   TestMethod m_test;
00198 };
00199 
00200 
00201 
00202 CPPUNIT_NS_END
00203 
00204 #endif // CPPUNIT_TESTCALLER_H

SourceForge Logo hosts this site. Send comments to:
CppUnit Developers