CppUnit project page FAQ CppUnit home page

Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class 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