Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

265 lines
6.7 KiB

//-------------------------------------------------------------------------
// File: tdinc.hxx
//
// Contents: Contains test driver class definitions for:
//
// -- CTDTestDrv
// -- CTDRunObj
// -- CTDTest
// -- CTDGroup
// -- CTDSwitch
// -- CTDParser
//
// History: 03/22/98 BogdanT Created
//--------------------------------------------------------------------------
#ifndef __TDINC_HXX__
#define __TDINC_HXX__
#include <tdmacros.hxx>
#include <tdlist.hxx>
class CBaseCmdlineObj;
class CTDRunObj;
class CTDTest;
class CTDGroup;
class CTDSwitch;
#define DEFAULT_TESTLOGINFO_SIZE 256
//---------------------------------------------------------------------------
// Class: CTDTestDrv
//
// Synopsis: test driver object definition
//
// History: 12/16/97 BogdanT Created
//---------------------------------------------------------------------------
class CTDTestDrv
{
public:
CTDTestDrv();
~CTDTestDrv();
HRESULT AddTest(LPTSTR ptszName,
TESTENTRY pTestFunc,
LPVOID pTestParam,
LPTSTR ptszDescription);
HRESULT AddGroup(LPTSTR ptszName,
SETUPENTRY pSetupFunc,
CLEANUPENTRY pCleanupFunc,
LPTSTR ptszDescription,
...);
HRESULT AddSwitch(SwitchType st,
LPTSTR ptszName,
LPTSTR ptszDefault,
LPTSTR ptszDescription);
HRESULT SetTestLogInfo(LPTSTR ptszFormat, ...);
void EnableLogging(BOOL fSet) { m_fLogging = fSet; }
HRESULT Init();
HRESULT Run();
LPCVOID GetSwitch (LPTSTR ptszName);
BOOL SwitchFound(LPTSTR ptszName);
FileSystem GetCurrentFileSystem();
ULONG GetGlobalSeed() { return m_ulSeed; };
friend class CTDTest;
friend class CTDGroup;
protected:
BOOL SkipIt(CTDRunObj* pObj) { return NULL!=m_listSkip.PtrFound(pObj); }
HRESULT TestPreRun (CTDTest* pTest);
HRESULT TestPostRun (CTDTest* pTest);
CTDTest *TestGetPointer(LPTSTR ptszName);
HRESULT GroupPreRun (CTDGroup*) { return S_OK; }
HRESULT GroupPostRun (CTDGroup*) { return S_OK; }
CTDGroup *GroupGetPointer(LPTSTR ptszName);
CTDSwitch* SwitchGetPointer(LPTSTR ptszName);
HRESULT SetRepro (CTDTest* pTest);
void LogResult(CTDTest* pTest);
void RandomizeSeed(ULONG ulSeed = 0);
LPTSTR m_ptszReproCmdline;
ULONG m_ulSeed;
DG_INTEGER m_dgi;
LPTSTR m_ptszCrtTestLogInfo;
BOOL m_fLogging;
LPTSTR m_ptszStartTest;
BOOL m_fStartTestFound;
ULONG m_ulCountPass;
ULONG m_ulCountFail;
ULONG m_ulCountAbort;
DWORD m_dwLocalSleepTime;
DWORD m_dwGlobalSleepTime;
TPtrList<CTDTest> m_listTests;
TPtrList<CTDGroup> m_listGroups;
TPtrList<CTDSwitch> m_listSwitches;
TPtrList<CTDRunObj> m_listRun;
TPtrList<CTDRunObj> m_listSkip;
};
//---------------------------------------------------------------------------
// Class: CTDRunObj
//
// Synopsis: runable object definition; pure virtual class
//
// History: 03/22/98 BogdanT Created
//---------------------------------------------------------------------------
class CTDRunObj
{
public:
virtual HRESULT Run() = 0;
};
//---------------------------------------------------------------------------
// Class: CTDTest
//
// Synopsis: test object definition
//
// History: 03/22/98 BogdanT Created
//---------------------------------------------------------------------------
class CTDTest : public CTDRunObj
{
public:
CTDTest();
~CTDTest();
HRESULT Init(LPTSTR ptszName,
TESTENTRY pTestFunc,
LPVOID pTestParam,
LPTSTR ptszDescription);
HRESULT Run();
friend class CTDTestDrv;
protected:
LPTSTR m_ptszName;
TESTENTRY m_pTestFunc;
LPVOID m_pTestParam;
LPTSTR m_ptszDescription;
HRESULT m_hr;
};
//---------------------------------------------------------------------------
// Class: CTDGroup
//
// Synopsis: group object definition
//
// History: 03/22/98 BogdanT Created
//---------------------------------------------------------------------------
class CTDGroup : public CTDRunObj
{
public:
CTDGroup();
~CTDGroup();
HRESULT Init(LPTSTR ptszName,
SETUPENTRY pSetupFunc,
CLEANUPENTRY pCleanupFunc,
LPTSTR ptszDescription);
HRESULT AddTest(CTDTest* pTest);
HRESULT Run();
friend class CTDTestDrv;
protected:
LPTSTR m_ptszName;
SETUPENTRY m_pSetupFunc;
CLEANUPENTRY m_pCleanupFunc;
LPTSTR m_ptszDescription;
HRESULT m_hr;
TPtrList<CTDTest> m_listTests;
};
//---------------------------------------------------------------------------
// Class: CTDSwitch
//
// Synopsis: cmdline switch object definition
//
// History: 03/22/98 BogdanT Created
//---------------------------------------------------------------------------
class CTDSwitch
{
public:
CTDSwitch();
~CTDSwitch();
HRESULT Init(SwitchType st,
LPTSTR ptszName,
LPTSTR ptszDefault,
LPTSTR ptszDescription);
BOOL SwitchIsFound() { return m_pObj->IsFound(); }
LPCVOID GetValue();
friend class CTDTestDrv;
protected:
SwitchType m_st;
LPTSTR m_ptszName;
CBaseCmdlineObj *m_pObj;
};
#define STRING_SEPARATOR TEXT(',')
//---------------------------------------------------------------------------
// Class: CTDParser
//
// Synopsis: string parser object definition
//
// History: 03/22/98 BogdanT Created
//---------------------------------------------------------------------------
class CTDParser
{
public:
CTDParser() { m_ptszText = NULL; m_ptszCrtPos = NULL; }
~CTDParser() { delete[] m_ptszText; }
HRESULT Init(LPTSTR ptszText, TCHAR tchSeparator);
HRESULT Next(LPTSTR &ptszNext);
void Reset() { m_ptszCrtPos = m_ptszText; }
protected:
LPTSTR m_ptszText;
LPTSTR m_ptszCrtPos;
TCHAR m_tchSeparator;
};
#endif //__TDINC_HXX__