~ubuntu-branches/ubuntu/quantal/psi/quantal

« back to all changes in this revision

Viewing changes to third-party/cppunit/cppunit/include/cppunit/extensions/TestSuiteBuilderContext.h

  • Committer: Bazaar Package Importer
  • Author(s): Jan Niehusmann
  • Date: 2009-09-25 17:49:51 UTC
  • mfrom: (6.1.3 sid)
  • Revision ID: james.westby@ubuntu.com-20090925174951-lvm7kdap82o8xhn3
Tags: 0.13-1
* Updated to upstream version 0.13
* Set Standards-Version to 3.8.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H
2
 
#define CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H
3
 
 
4
 
#include <cppunit/Portability.h>
5
 
#include <cppunit/portability/CppUnitMap.h>
6
 
#include <string>
7
 
 
8
 
#if CPPUNIT_NEED_DLL_DECL
9
 
#pragma warning( push )
10
 
#pragma warning( disable: 4251 )  // X needs to have dll-interface to be used by clients of class Z
11
 
#endif
12
 
 
13
 
 
14
 
CPPUNIT_NS_BEGIN
15
 
 
16
 
class TestSuite;
17
 
class TestFixture;
18
 
class TestFixtureFactory;
19
 
class TestNamer;
20
 
 
21
 
/*! \brief Context used when creating test suite in HelperMacros.
22
 
 *
23
 
 * Base class for all context used when creating test suite. The
24
 
 * actual context type during test suite creation is TestSuiteBuilderContext.
25
 
 *
26
 
 * \sa CPPUNIT_TEST_SUITE, CPPUNIT_TEST_SUITE_ADD_TEST, 
27
 
 *     CPPUNIT_TEST_SUITE_ADD_CUSTOM_TESTS.
28
 
 */
29
 
class CPPUNIT_API TestSuiteBuilderContextBase
30
 
{
31
 
public:
32
 
  /*! \brief Constructs a new context.
33
 
   *
34
 
   * You should not use this. The context is created in 
35
 
   * CPPUNIT_TEST_SUITE().
36
 
   */
37
 
  TestSuiteBuilderContextBase( TestSuite &suite,
38
 
                               const TestNamer &namer,
39
 
                               TestFixtureFactory &factory );
40
 
 
41
 
  virtual ~TestSuiteBuilderContextBase();
42
 
 
43
 
  /*! \brief Adds a test to the fixture suite.
44
 
   *
45
 
   * \param test Test to add to the fixture suite. Must not be \c NULL.
46
 
   */
47
 
  void addTest( Test *test );
48
 
 
49
 
  /*! \brief Returns the fixture name.
50
 
   * \return Fixture name. It is the name used to name the fixture
51
 
   *         suite.
52
 
   */
53
 
  std::string getFixtureName() const;
54
 
 
55
 
  /*! \brief Returns the name of the test for the specified method.
56
 
   *
57
 
   * \param testMethodName Name of the method that implements a test.
58
 
   * \return A string that is the concatenation of the test fixture name 
59
 
   *         (returned by getFixtureName()) and\a testMethodName, 
60
 
   *         separated using '::'. This provides a fairly unique name for a given
61
 
   *         test.
62
 
   */
63
 
  std::string getTestNameFor( const std::string &testMethodName ) const;
64
 
 
65
 
  /*! \brief Adds property pair.
66
 
   * \param key   PropertyKey string to add.
67
 
   * \param value PropertyValue string to add.
68
 
   */
69
 
  void addProperty( const std::string &key, 
70
 
                    const std::string &value );
71
 
  
72
 
  /*! \brief Returns property value assigned to param key.
73
 
   * \param key PropertyKey string.
74
 
   */
75
 
  const std::string getStringProperty( const std::string &key ) const;
76
 
 
77
 
protected:
78
 
  TestFixture *makeTestFixture() const;
79
 
 
80
 
  // Notes: we use a vector here instead of a map to work-around the
81
 
  // shared std::map in dll bug in VC6.
82
 
  // See http://www.dinkumware.com/vc_fixes.html for detail.
83
 
  typedef std::pair<std::string,std::string> Property;
84
 
  typedef CppUnitVector<Property> Properties;
85
 
 
86
 
  TestSuite &m_suite;
87
 
  const TestNamer &m_namer;
88
 
  TestFixtureFactory &m_factory;
89
 
 
90
 
private:
91
 
  Properties m_properties;
92
 
};
93
 
 
94
 
 
95
 
/*! \brief Type-sage context used when creating test suite in HelperMacros.
96
 
 * 
97
 
 * \sa TestSuiteBuilderContextBase.
98
 
 */
99
 
template<class Fixture>
100
 
class TestSuiteBuilderContext : public TestSuiteBuilderContextBase
101
 
{
102
 
public:
103
 
  typedef Fixture FixtureType;
104
 
 
105
 
  TestSuiteBuilderContext( TestSuiteBuilderContextBase &contextBase )
106
 
      : TestSuiteBuilderContextBase( contextBase )
107
 
  {
108
 
  }
109
 
 
110
 
  /*! \brief Returns a new TestFixture instance.
111
 
   * \return A new fixture instance. The fixture instance is returned by
112
 
   *         the TestFixtureFactory passed on construction. The actual type 
113
 
   *         is that of the fixture on which the static method suite() 
114
 
   *         was called.
115
 
   */
116
 
  FixtureType *makeFixture() const
117
 
  {
118
 
    return CPPUNIT_STATIC_CAST( FixtureType *, 
119
 
                                TestSuiteBuilderContextBase::makeTestFixture() );
120
 
  }
121
 
};
122
 
 
123
 
 
124
 
CPPUNIT_NS_END
125
 
 
126
 
#if CPPUNIT_NEED_DLL_DECL
127
 
#pragma warning( pop )
128
 
#endif
129
 
 
130
 
#endif // CPPUNIT_HELPER_TESTSUITEBUILDERCONTEXT_H
131