⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 afxbase.h

📁 一个跟Cppunit一样好用的单元测试工具
💻 H
字号:
/*! Time-stamp: <@(#)BaseTestCase.h   2005-12-10     Ricmy zhu mail: ricmy_zhu@newsofitn.com>
 ******************************************************************************
 *  file   : AfxBase.h
 *  brief    Base Test case system
 *  Project : Test case system  1.10
 *  Package : BaseTestCase
 *  Company : NEWSOFTINC
 *  Author  : Ricmy zhu                              Date: 2005-12-10
 *  Purpose : add test case in project .
 ******************************************************************************
 * Version History:
 *
 * V 1.10  2005-12-10  BN : First Revision
 *
 ******************************************************************************
 */
#if !defined(AFX_TEST_H__BASE0F005564_8A25_4BF5_BD78_F09C55EDC2BC__INCLUDED_)
#define AFX_TEST_H__BASE0F005564_8A25_4BF5_BD78_F09C55EDC2BC__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Test.h : header file
//

#ifdef _MT
void AFXAPI AfxLockGlobals(int nLockType);
void AFXAPI AfxUnlockGlobals(int nLockType);
BOOL AFXAPI AfxCriticalInit();
void AFXAPI AfxCriticalTerm();
#else
#define AfxLockGlobals(nLockType)
#define AfxUnlockGlobals(nLockType)
#define AfxCriticalInit() (TRUE)
#define AfxCriticalTerm()
#endif
#define CRIT_RUNTIMECLASSLIST   0


struct AFX_CLASSINIT_EX 
{ 
	AFX_CLASSINIT_EX(CRuntimeClass* pNewClass)
	 {
		//AFX_MANAGE_STATE(AfxGetStaticModuleState());
		AFX_MODULE_STATE* pModuleState = AfxGetModuleState();
//		AFX_MODULE_STATE* pModuleState = AfxGetStaticModuleState();
		
		AfxLockGlobals(CRIT_RUNTIMECLASSLIST);
		if(pModuleState->m_pClassInit)
			pNewClass->m_pNextClass = pModuleState->m_pClassInit;
		pModuleState->m_pClassInit = pNewClass;
		//pModuleState->m_classList.AddHead(pNewClass);
		AfxUnlockGlobals(CRIT_RUNTIMECLASSLIST);
	}
 };



#ifdef _AFXDLL
#define _IMPLEMENT_RUNTIMECLASS_EX(class_name, base_class_name, wSchema, pfnNew,base_TestCase_name) \
	CRuntimeClass* PASCAL  class_name::_GetBaseClass() \
		{ return RUNTIME_CLASS(base_class_name); } \
	AFX_COMDAT AFX_DATADEF CRuntimeClass class_name::class##class_name = { \
		#base_TestCase_name, sizeof(class class_name), wSchema, pfnNew, \
			&class_name::_GetBaseClass, NULL }; \
	CRuntimeClass*  class_name::GetRuntimeClass() const \
		{ return RUNTIME_CLASS(class_name); } 
#else
#define _IMPLEMENT_RUNTIMECLASS_EX(class_name, base_class_name, wSchema, pfnNew,base_TestCase_name) \
	AFX_DATADEF CRuntimeClass   class_name::class##class_name = { \
		#base_TestCase_name, sizeof(class class_name), wSchema, pfnNew, \
			RUNTIME_CLASS(base_class_name), NULL }; \
	CRuntimeClass* class_name::GetRuntimeClass() const \
		{ return RUNTIME_CLASS(class_name); } 
#endif
#define IMPLEMENT_SERIAL_EX(class_name, base_class_name, wSchema,base_TestCase_nae) \
	LPSTR class_name::m_lp##class_name = #class_name;\
	LPSTR class_name::GetTestCaseClassName() \
	{ return m_lp##class_name;}\
	CObject* PASCAL  class_name::CreateObject() \
		{ return new class_name; } \
	_IMPLEMENT_RUNTIMECLASS_EX(class_name, base_class_name, wSchema, \
		class_name::CreateObject,base_TestCase_nae) \
	AFX_CLASSINIT_EX _init_##class_name(RUNTIME_CLASS(class_name)); \
	CArchive& AFXAPI operator>>(CArchive& ar, class_name* &pOb) \
		{ pOb = (class_name*) ar.ReadObject(RUNTIME_CLASS(class_name)); \
			return ar; } 	



typedef void (AFX_MSG_CALL CObject::*TEST_CASE)(void);
typedef struct 
{
	TEST_CASE dcase;
	char szFunName[50];
}FUNINFO;
	
#define  BASE_TEST_CASE_TRACE \
						public:\
						LPSTR szCurFunName;\
						static void test_case_trace(CBaseTestCase * pThis ,CString strText);\
						static void test_case_assert(CBaseTestCase * pThis ,BOOL);

#define  BASE_TEST_CASE_H(class_name) DECLARE_SERIAL(class_name)\
						public: \
						static  LPSTR m_lp##class_name;

#define  BASE_TEST_CASE_CPP(class_name) IMPLEMENT_SERIAL_EX(class_name,CObject, 4,CBaseTestCase)

#define	GETTESTCASEMAP   FUNINFO * GetTestCaseMap() {return _messageEntries;};

#define  TEST_CASE_MAP private: \
						static  FUNINFO _messageEntries[]; \
						virtual LPSTR GetTestCaseClassName();\
						GETTESTCASEMAP

#define BEGIN_TEST_CASE_MAP(theClass)   FUNINFO theClass::_messageEntries[] = \
					{ 
#define END_TEST_CASE_MAP   0  } ;

#define TEST_CASE_MEMBER(memberFxn)  {(TEST_CASE)&memberFxn,#memberFxn } ,





#endif // !defined(AFX_TEST_H__BASE0F005564_8A25_4BF5_BD78_F09C55EDC2BC__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -