~ubuntu-branches/ubuntu/utopic/psi/utopic

« 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: 2008-08-28 18:46:52 UTC
  • mfrom: (1.2.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20080828184652-iiik12dl91nq7cdi
Tags: 0.12-2
Uploading to unstable (Closes: Bug#494352)

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