00001
#ifndef CPPUNIT_TESTPATH_H
00002
#define CPPUNIT_TESTPATH_H
00003
00004
#include <cppunit/Portability.h>
00005
00006
#if CPPUNIT_NEED_DLL_DECL
00007
#pragma warning( push )
00008
#pragma warning( disable: 4251 ) // X needs to have dll-interface to be used by clients of class Z
00009
#endif
00010
00011
#include <cppunit/portability/CppUnitDeque.h>
00012
00013
CPPUNIT_NS_BEGIN
00014
00015
00016
class Test;
00017
00018
#if CPPUNIT_NEED_DLL_DECL
00019
00020
#endif
00021
00022
00033 class CPPUNIT_API TestPath
00034 {
00035
public:
00040 TestPath();
00041
00046 TestPath(
Test *root );
00047
00055 TestPath(
const TestPath &otherPath,
00056
int indexFirst,
00057
int count = -1 );
00058
00074 TestPath(
Test *searchRoot,
00075
const std::string &pathAsString );
00076
00080 TestPath(
const TestPath &other );
00081
00082
virtual ~TestPath();
00083
00087
virtual bool isValid()
const;
00088
00092
virtual void add(
Test *test );
00093
00097
virtual void add(
const TestPath &path );
00098
00104
virtual void insert(
Test *test,
int index );
00105
00112
virtual void insert(
const TestPath &path,
int index );
00113
00118
virtual void removeTests();
00119
00124
virtual void removeTest(
int index );
00125
00130
virtual void up();
00131
00135
virtual int getTestCount()
const;
00136
00142
virtual Test *getTestAt(
int index )
const;
00143
00148
virtual Test *getChildTest()
const;
00149
00160
virtual std::string toString()
const;
00161
00166 TestPath &operator =(
const TestPath &other );
00167
00168
protected:
00173
void checkIndexValid(
int index )
const;
00174
00176 typedef CppUnitDeque<std::string>
PathTestNames;
00177
00184
bool splitPathString(
const std::string &pathAsString,
00185 PathTestNames &testNames );
00186
00196
Test *findActualRoot(
Test *searchRoot,
00197
const std::string &pathAsString,
00198 PathTestNames &testNames );
00199
00200
protected:
00201 typedef CppUnitDeque<Test *> Tests;
00202 Tests m_tests;
00203
00204 };
00205
00206
00207
CPPUNIT_NS_END
00208
00209
#endif // CPPUNIT_TESTPATH_H
00210