#ifndef __ACTTESTRUNNERMFC_H__
#define __ACTTESTRUNNERMFC_H__

#if defined(_AFXEXT)
#define ACT_API __declspec(dllexport)
#else
#define ACT_API __declspec(dllimport)
#endif 

#ifdef	__cplusplus
extern "C" {
#endif

typedef struct __ITestRunnerMfc	ITestRunnerMfc;
typedef struct __ITestRunnerMfcVtbl ITestRunnerMfcVtbl;

struct __ITestRunnerMfcVtbl {
	void (*start)(ITestRunnerMfc* po);
	void (*addTest)(ITestRunnerMfc* po, ITest* test);
    void (*runTest)(ITestRunnerMfc* po);
	void (*end)(ITestRunnerMfc*po);
};

#define ITestRunnerMfc_start(po)			(*(ITestRunnerMfcVtbl**)po)->start(po)
#define ITestRunnerMfc_addTest(po,test)	(*(ITestRunnerMfcVtbl**)po)->addTest(po,test)
#define ITestRunnerMfc_runTest(po)                 (*(ITestRunnerMfcVtbl**)po)->runTest(po)
#define ITestRunnerMfc_end(po)				(*(ITestRunnerMfcVtbl**)po)->end(po)

#define ITestRunnerMfc_start(po)			(*(ITestRunnerMfcVtbl**)po)->start(po)

ACT_API ITestRunnerMfc*    ITestRunnerMfc_New();
ACT_API void            ITestRunnerMfc_Delete(ITestRunnerMfc* pMe);

#ifdef	__cplusplus
}
#endif

#endif /*  __ACTTESTRUNNERMFC_H__ */
