haiku/headers/tools/cppunit/ThreadedTestCase.h
Tyler Dauwalder 0a99bdf489 Fixed multithreaded NextSubTest() output problems
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@157 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-07-12 20:30:45 +00:00

49 lines
1.3 KiB
C++

#ifndef _beos_threaded_test_case_h_
#define _beos_threaded_test_case_h_
#include <Locker.h>
#include <kernel/OS.h>
#include <TestCase.h>
#include <map>
#include <string>
#include <vector>
//! Base class for single threaded unit tests
class BThreadedTestCase : public BTestCase {
public:
BThreadedTestCase(std::string Name = "", std::string progressSeparator = ".");
virtual ~BThreadedTestCase();
/*! \brief Displays the next sub test progress indicator for the
thread in which it's called (i.e. [A.0][B.0][A.1][A.2][B.1]...). */
virtual void NextSubTest();
//! Saves the location of the current working directory.
void SaveCWD();
//! Restores the current working directory to last directory saved by a call to SaveCWD().
void RestoreCWD(const char *alternate = NULL);
void InitThreadInfo(thread_id id, std::string threadName);
bool RegisterForUse();
void UnregisterForUse();
std::vector<std::string>& AcquireUpdateList();
void ReleaseUpdateList();
protected:
bool fInUse;
// friend class ThreadManager<BThreadedTestCase>;
std::string fProgressSeparator;
struct ThreadSubTestInfo {
std::string name;
int32 subTestNum;
};
std::map<thread_id, ThreadSubTestInfo*> fNumberMap;
std::vector<std::string> fUpdateList;
BLocker *fUpdateLock;
};
#endif // _beos_threaded_test_case_h_