eis/inc/base/TestMag.h

122 lines
3.2 KiB
C
Raw Permalink Normal View History

/*********************************************************************
*
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: TestMag.h <EFBFBD><EFBFBD><EFBFBD>Թ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* <EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Shanghai Baosight Software Co., Ltd.
*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>//TODO<44><4F><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>//TODO
* <EFBFBD><EFBFBD>//TODO
*
* <EFBFBD><EFBFBD><EFBFBD>ʷ
* 1.0 2010-08-03 tonny //TODO<44><4F><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
* %USER%
*********************************************************************/
#ifndef _APP_UNITEST_TEST_H
#define _APP_UNITEST_TEST_H
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <base/TestNode.h>
//#include <unitest/apptest.h>
using namespace std;
namespace baosight
{
class TestMag
{
public :
TestMag(int mode = 0,int column = 1);
virtual ~TestMag();
// <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>ȹ<EFBFBD><C8B9><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ҫȷ<D2AA><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>ȷ
void addTestCase(TestNode* child,TestNode*father=NULL);
// <20><><EFBFBD><EFBFBD>: <20><><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>0:<3A>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>з<EFBFBD>ʽ<EFBFBD><CABD>1<EFBFBD><31><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>з<EFBFBD>ʽ
int run();
private:
/**********************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: //TODO:<3A><><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> manaulTest
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> int //TODO:<3A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȡֵ<EFBFBD><EFBFBD>Χ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* node : [IN/OUT] TestNode * //TODO:<3A><><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5>Χ <//TODO:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>
* level : [IN/OUT] int & //TODO:<3A><><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5>Χ <//TODO:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>
*
* <EFBFBD><EFBFBD><EFBFBD>ʷ
* 1.0 2010-07-26 tonny //TODO<44><4F><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
*
**********************************************************************/
int manaulTest(TestNode* node,int& level);
void showLevelMenu(TestNode*father,int level);
// <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>ʽִ<CABD><D6B4><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
void autoTest(TestNode* node,int level,bool allLeaf = true);
/**********************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: //TODO:<3A><><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> clearNodes
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> void //TODO:<3A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȡֵ<EFBFBD><EFBFBD>Χ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* father : [IN/OUT] TestNode * //TODO:<3A><><EFBFBD><EFBFBD>ȡֵ<C8A1><D6B5>Χ <//TODO:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>
*
* <EFBFBD><EFBFBD><EFBFBD>ʷ
* 1.0 2010-08-03 tonny //TODO<44><4F><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
*
**********************************************************************/
void clearNodes(TestNode* father);
/**********************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> showHelp
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> void //TODO:<3A><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȡֵ<EFBFBD><EFBFBD>Χ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* <EFBFBD><EFBFBD><EFBFBD>ʷ
* 1.0 2010-08-03 tonny //TODO<44><4F><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>
*
**********************************************************************/
void showHelp();
private:
//change mode ,auto <-->manual
int changeMode(int level);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
int showTipCommand();
private:
TestNode* p_testNodes;
int m_column;
int m_mode;//0<>ֶ<EFBFBD>ģʽ<C4A3><CABD>1<EFBFBD>Զ<EFBFBD>ģʽ
int m_succTestNum;
int m_failTestNum;
int m_status;
};
//<2F><><EFBFBD>Կ<EFBFBD>ʼ
#define TEST_START TestMag* p_TestMag = new TestMag();\
//<2F><><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD>
#define TEST_END p_TestMag->run();delete p_TestMag;\
//<2F><><EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD>
#define TEST_ROOT_ADD(rootNode){\
p_TestMag->addTestCase(new rootNode);\
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2>Խ<EFBFBD><D4BD><EFBFBD>
#define TEST_SUB_ADD(childNode,fatherName){\
p_TestMag->addTestCase(new childNode,new fatherName);\
}
};
#endif