CppUnit project page | FAQ | CppUnit home page

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

TestSuiteBuilderContext.h
Go to the documentation of this file.

    00001 #ifndef CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H
    00002 #define CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H
    00003
    00004 #include <cppunit/Portability.h>
    00005 #include <cppunit/portability/CppUnitMap.h>
    00006 #include <string>
    00007
    00008 #if CPPUNIT_NEED_DLL_DECL
    00009 #pragma warning( push )
    00010 #pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
    00011 #endif
    00012
    00013
    00014 CPPUNIT_NS_BEGIN
    00015
    00016 class TestSuite;
    00017 class TestFixture;
    00018 class TestFixtureFactory;
    00019 class TestNamer;
    00020
    00029 class CPPUNIT_API TestSuiteBuilderContextBase
    00030 {
    00031 public:
    00037   TestSuiteBuilderContextBase( TestSuite &suite,
    00038                                const TestNamer &namer,
    00039                                TestFixtureFactory &factory );
    00040
    00041   virtual ~TestSuiteBuilderContextBase();
    00042
    00047   void addTest( Test *test );
    00048
    00053   std::string getFixtureName() const;
    00054
    00063   std::string getTestNameFor( const std::string &testMethodName ) const;
    00064
    00069   void addProperty( const std::string &key,
    00070                     const std::string &value );
    00071
    00075   const std::string getStringProperty( const std::string &key ) const;
    00076
    00077 protected:
    00078   TestFixture *makeTestFixture() const;
    00079
    00080   // Notes: we use a vector here instead of a map to work-around the
    00081   // shared std::map in dll bug in VC6.
    00082   // See http://www.dinkumware.com/vc_fixes.html for detail.
    00083   typedef std::pair<std::string,std::string> Property;
    00084   typedef CppUnitVector<Property> Properties;
    00085
    00086   TestSuite &m_suite;
    00087   const TestNamer &m_namer;
    00088   TestFixtureFactory &m_factory;
    00089
    00090 private:
    00091   Properties m_properties;
    00092 };
    00093
    00094
    00099 template<class Fixture>
    00100 class TestSuiteBuilderContext : public TestSuiteBuilderContextBase
    00101 {
    00102 public:
    00103   typedef Fixture FixtureType;
    00104
    00105   TestSuiteBuilderContext( TestSuiteBuilderContextBase &contextBase )
    00106       : TestSuiteBuilderContextBase( contextBase )
    00107   {
    00108   }
    00109
    00116   FixtureType *makeFixture() const
    00117   {
    00118     return CPPUNIT_STATIC_CAST( FixtureType *,
    00119                                 TestSuiteBuilderContextBase::makeTestFixture() );
    00120   }
    00121 };
    00122
    00123
    00124 CPPUNIT_NS_END
    00125
    00126 #if CPPUNIT_NEED_DLL_DECL
    00127 #pragma warning( pop )
    00128 #endif
    00129
    00130 #endif // CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H
    00131

| hosts this site. |  | Send comments to: CppUnit Developers