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

📄 cexfunctiontester.cpp

📁 这是一个能够自动生成文档的程序
💻 CPP
📖 第 1 页 / 共 4 页
字号:
/**************************************************
//$$ BEGIN
CTokenList@@1@1@()
CExFunction@@1@1@()
LPCTSTR@@0@2@""$0
int@INT4@0@5@-2147483647$-1$0$1$2147483647
BOOL@@0@2@0$1
unsigned_int@UINT$DWORD@0@3@0$1$0xFFFFFFFF
CString@@0@3@"Visual Unit"$""$"中文怎么样?"
POSITION@@0@1@0
PARAMETER@@1@1@()
//$$ END
**************************************************/

/**************************************************
作    者:user1
建立日期:2006-9-8
修改日期:
说    明:测试文件,用于测试[CExFunction]。
**************************************************/

#include "stdafx.h"
//
/////////////////////////////////////////////////////////////////////////////
#include "CExFunctionTester.h"
#include "CPGlobals.h"
//
/////////////////////////////////////////////////////////////////////////////

void CExFunctionTester::ClassTest()
{
    TEST_SOURCE_NAME(ExFunction.cpp);
    CUSTOM_TEST(CExFunction);
 
    //$$
    TEST_CALL_BEGIN(CExFunction,1,0)
    TEST_CALL1(ParseParameter_CTokenListR_CExFunctionR())//ParseParameter(CTokenList&,CExFunction&)
    TEST_CALL1(IsParamEqual_LPCTSTR_int())//IsParamEqual(LPCTSTR,int)
    TEST_CALL1(operator_LL_CExFunctionR())//operator==(CExFunction&)
    TEST_CALL1(UniteFunction_CExFunctionP())//UniteFunction(CExFunction*)
    TEST_CALL1(ParsePrecursor_CTokenListR_CExFunctionR_BOOL())//ParsePrecursor(CTokenList&,CExFunction&,BOOL)
    TEST_CALL1(ParseDeclare_CTokenListR_UINT_CExFunctionR_BOOL())//ParseDeclare(CTokenList&,UINT,CExFunction&,BOOL)
    TEST_CALL1(ParseOneParameter_CTokenListR())//ParseOneParameter(CTokenList&)
    TEST_CALL1(GetPrototype_CStringR())//GetPrototype(CString&)
    TEST_CALL1(ParseTail_CTokenListR_CExFunctionR())//ParseTail(CTokenList&,CExFunction&)
    TEST_CALL1(ParseFunction_CTokenListR_UINT_BOOL_CTokenListP_POSITIONP_BOOL())//ParseFunction(CTokenList&,UINT,BOOL,CTokenList*,POSITION*,BOOL)
    TEST_CALL1(ParseOneParameter2_CTokenListR())//ParseOneParameter2(CTokenList&)
    TEST_CALL1(ParseOneParameter2DefaultValue_CTokenListR_PARAMETERR())//ParseOneParameter2DefaultValue(CTokenList&,PARAMETER&)
    TEST_CALL1(ParseOneParameter2Array_CTokenListR_PARAMETERR())//ParseOneParameter2Array(CTokenList&,PARAMETER&)
    TEST_CALL1(ParseOneParameter2TypeAndName_CTokenListR_PARAMETERR())//ParseOneParameter2TypeAndName(CTokenList&,PARAMETER&)
    TEST_CALL_END()
    //$$
}

//
/////////////////////////////////////////////////////////////////////////////

CExFunctionTester::CExFunctionTester()
{
    pObj = 0;
}

CExFunctionTester::~CExFunctionTester()
{

}

void CExFunctionTester::BeginCase(int arg)
{
    switch(arg)
    {

    case ARG_DEFAULT:
    {
        pObj = new TESTCLASS();
        break;
    }
    /*
    case :
    {
        pObj = new TESTCLASS();
        break;
    }
    case :
    {
        pObj = new TESTCLASS();
        break;
    }
    */

    }
}

void CExFunctionTester::EndCase(int /*arg*/)
{
    delete pObj;
    pObj = 0;
}

//自定义测试,用MY_ASSERT(布尔表达式)断言预期输出
/////////////////////////////////////////////////////////////////////////////

void CExFunctionTester::CustomTest()
{

}

//
/////////////////////////////////////////////////////////////////////////////





void CExFunctionTester::ParseParameter_CTokenListR_CExFunctionR()
{
    TEST_BEGIN(CExFunction::ParseParameter(CTokenList&,CExFunction&));

    //$$CASE_BEGIN(ParseParameter_CTokenListR_CExFunctionR())

    /// 
    TEST_CASE_BEGINO( ARG_DEFAULT );
    CTokenList iList   ;
    CTokenReader reader;
    reader.ReadTokenList(iList, "int i, int j");
    CExFunction oFunc  ;
    TEST_RUN( pObj->ParseParameter(iList, oFunc) );
    TEST_CASE_ENDO( ARG_DEFAULT );
    //$$ [1] [正常] [2006-9-8 15:48:51]

    //??BVTEST_BEGIN_2(O,CTokenList,iList,R,0,CExFunction,oFunc,R,0)
    //自动边界测试用例,可用TEST_FILTER()过滤输入数据
    //TEST_FILTER();
    //??TEST_RUN( pObj->ParseParameter(iList, oFunc) );
    //TEST_ASSERT();
    //??BVTEST_END(O,2)
    //$$ [2] [自动] [2006-9-8 15:48:51]

    //$$CASE_END(ParseParameter_CTokenListR_CExFunctionR())

    TEST_RATE(1000);
    TEST_END();
}
//$$ParseParameter_CTokenListR_CExFunctionR()







void CExFunctionTester::IsParamEqual_LPCTSTR_int()
{
    TEST_BEGIN(CExFunction::IsParamEqual(LPCTSTR,int));
    BOOL ret;

    //$$CASE_BEGIN(IsParamEqual_LPCTSTR_int())

    /// 
    TEST_CASE_BEGINO( ARG_DEFAULT );
    LPCTSTR iParamType  = "int";
    int iIndex          = 0;
    //由于析构函数会删除传入的指针,这里不能使用局部对象;
    PARAMETER* pParam = new PARAMETER;
    pParam->type = "int";
    pObj->AddParameter(pParam);
    TEST_RUN( ret = pObj->IsParamEqual(iParamType, iIndex) );
    TEST_ASSERT( ret == TRUE );
    TEST_CASE_ENDO( ARG_DEFAULT );
    //$$ [1] [正常] [2006-9-14 14:45:18]

    /// 
    TEST_CASE_BEGINO( ARG_DEFAULT );
    LPCTSTR iParamType  = "CMyClass&";
    int iIndex          = 1;
    //由于析构函数会删除传入的指针,这里不能使用局部对象;
    PARAMETER* pParam = new PARAMETER;
    pParam->type = "int";
    pObj->AddParameter(pParam);
    PARAMETER* pParam2 = new PARAMETER;
    pParam2->type = "CMyClass&";
    pObj->AddParameter(pParam2);
    TEST_RUN( ret = pObj->IsParamEqual(iParamType, iIndex) );
    TEST_ASSERT( ret == TRUE );
    TEST_CASE_ENDO( ARG_DEFAULT );
    //$$ [2] [正常] [2006-9-14 14:48:24]

    /// 
    TEST_CASE_BEGINO( ARG_DEFAULT );
    LPCTSTR iParamType  = "int";
    int iIndex          = 0;
    //由于析构函数会删除传入的指针,这里不能使用局部对象;
    PARAMETER* pParam = new PARAMETER;
    pParam->type = "int*";
    pObj->AddParameter(pParam);
    TEST_RUN( ret = pObj->IsParamEqual(iParamType, iIndex) );
    TEST_ASSERT( ret == FALSE );
    TEST_CASE_ENDO( ARG_DEFAULT );
    //$$ [3] [正常] [2006-9-14 14:48:7]

    /// 
    TEST_CASE_BEGINO( ARG_DEFAULT );
    LPCTSTR iParamType  = "int";
    int iIndex          = 2;
    //由于析构函数会删除传入的指针,这里不能使用局部对象;
    PARAMETER* pParam = new PARAMETER;
    pParam->type = "int";
    pObj->AddParameter(pParam);
    TEST_RUN( ret = pObj->IsParamEqual(iParamType, iIndex) );
    TEST_ASSERT( ret == FALSE );
    TEST_CASE_ENDO( ARG_DEFAULT );
    //$$ [4] [正常] [2006-9-14 14:51:41]

    //??BVTEST_BEGIN_2(O,LPCTSTR,iParamType,R,0,int,iIndex,R,0)
    //自动边界测试用例,可用TEST_FILTER()过滤输入数据
    //TEST_FILTER();
    //??TEST_RUN( ret = pObj->IsParamEqual(iParamType, iIndex) );
    //TEST_ASSERT();
    //??BVTEST_END(O,2)
    //$$ [5] [自动] [2006-9-14 14:45:18]

    //$$CASE_END(IsParamEqual_LPCTSTR_int())

    TEST_RATE(1000);
    TEST_END();
}
//$$IsParamEqual_LPCTSTR_int()

void CExFunctionTester::operator_LL_CExFunctionR()
{
    TEST_BEGIN(CExFunction::operator==(CExFunction&));
    BOOL ret;

    //$$CASE_BEGIN(operator_LL_CExFunctionR())

    /// 
    TEST_CASE_BEGINO( ARG_DEFAULT );
    CExFunction oOther;
    CTokenList list;
    CTokenReader reader;
    reader.ReadTokenList(list, "int MyFunc(int i, int j)");
    CExFunction::ParseDeclare(list, TRIM_PUBLIC, oOther);
    CExFunction::ParseDeclare(list, TRIM_PUBLIC, *pObj);
    TEST_RUN( ret = pObj->operator==(oOther) );
    TEST_ASSERT( ret == TRUE );
    reader.ClearTokenList(list); //!
    TEST_CASE_ENDO( ARG_DEFAULT );
    //$$ [1] [正常] [2006-9-14 14:52:14]

    /// 
    TEST_CASE_BEGINO( ARG_DEFAULT );
    CExFunction oOther;
    CTokenList list;
    CTokenReader reader;
    reader.ReadTokenList(list, "int MyFunc(int i, int j)");
    CExFunction::ParseDeclare(list, TRIM_PUBLIC, oOther);
    CTokenList list2;
    reader.ReadTokenList(list2, "int MyFunc(int i, int* j)");
    CExFunction::ParseDeclare(list2, TRIM_PUBLIC, *pObj);
    TEST_RUN( ret = pObj->operator==(oOther) );
    TEST_ASSERT( ret == FALSE );
    reader.ClearTokenList(list); //!
    reader.ClearTokenList(list2); //!
    TEST_CASE_ENDO( ARG_DEFAULT );
    //$$ [2] [正常] [2006-9-14 15:7:17]

    /// 
    TEST_CASE_BEGINO( ARG_DEFAULT );
    CExFunction oOther;
    CTokenList list;
    CTokenReader reader;
    reader.ReadTokenList(list, "int MyFunc(int i, int j)");
    CExFunction::ParseDeclare(list, TRIM_PUBLIC, oOther);
    CTokenList list2;
    reader.ReadTokenList(list2, "int MyFunc2(int i, int j)");
    CExFunction::ParseDeclare(list2, TRIM_PUBLIC, *pObj);
    TEST_RUN( ret = pObj->operator==(oOther) );
    TEST_ASSERT( ret == FALSE );
    reader.ClearTokenList(list); //!
    reader.ClearTokenList(list2); //!
    TEST_CASE_ENDO( ARG_DEFAULT );
    //$$ [3] [正常] [2006-9-14 15:8:58]

    /// 
    TEST_CASE_BEGINO( ARG_DEFAULT );
    CExFunction oOther;
    CTokenList list;
    CTokenReader reader;
    reader.ReadTokenList(list, "int MyFunc(int i, int j)");
    CExFunction::ParseDeclare(list, TRIM_PUBLIC, oOther);
    CTokenList list2;
    reader.ReadTokenList(list2, "int MyFunc()");
    CExFunction::ParseDeclare(list2, TRIM_PUBLIC, *pObj);
    TEST_RUN( ret = pObj->operator==(oOther) );
    TEST_ASSERT( ret == FALSE );
    reader.ClearTokenList(list); //!
    reader.ClearTokenList(list2); //!
    TEST_CASE_ENDO( ARG_DEFAULT );
    //$$ [4] [正常] [2006-9-14 15:10:33]

    /// 
    TEST_CASE_BEGINO( ARG_DEFAULT );
    CExFunction oOther;
    CTokenList list;
    CTokenReader reader;
    reader.ReadTokenList(list, "int MyFunc()");
    CExFunction::ParseDeclare(list, TRIM_PUBLIC, oOther);
    CTokenList list2;
    reader.ReadTokenList(list2, "int MyFunc()");
    CExFunction::ParseDeclare(list2, TRIM_PUBLIC, *pObj);
    TEST_RUN( ret = pObj->operator==(oOther) );
    TEST_ASSERT( ret == TRUE );
    reader.ClearTokenList(list); //!
    reader.ClearTokenList(list2); //!
    TEST_CASE_ENDO( ARG_DEFAULT );
    //$$ [5] [正常] [2006-9-14 15:13:52]

    //??BVTEST_BEGIN_1(O,CExFunction,oOther,R,0)
    //自动边界测试用例,可用TEST_FILTER()过滤输入数据
    //TEST_FILTER();
    //??TEST_RUN( ret = pObj->operator==(oOther) );
    //TEST_ASSERT();
    //??BVTEST_END(O,1)
    //$$ [6] [自动] [2006-9-14 14:52:14]

    //$$CASE_END(operator_LL_CExFunctionR())

    TEST_RATE(1000);
    TEST_END();
}
//$$operator_LL_CExFunctionR()

void CExFunctionTester::UniteFunction_CExFunctionP()
{
    TEST_BEGIN(CExFunction::UniteFunction(CExFunction*));

    //$$CASE_BEGIN(UniteFunction_CExFunctionP())

    /// 
    TEST_CASE_BEGINO( ARG_DEFAULT );
    //由于合并时会删除完全相同的函数,这里要在堆上生成对象;
    CExFunction* ipOther = new CExFunction();
    CTokenList list;
    CTokenReader reader;
    reader.ReadTokenList(list, "int MyFunc()");
    CExFunction::ParseDeclare(list, TRIM_PUBLIC, *ipOther);
    ipOther->SetDefined(TRUE);
    CTokenList list2;
    reader.ReadTokenList(list2, "int MyFunc()");
    CExFunction::ParseDeclare(list2, TRIM_PUBLIC, *pObj);
    TEST_RUN( pObj->UniteFunction(ipOther) );
    reader.ClearTokenList(list); //!
    reader.ClearTokenList(list2); //!
    TEST_CASE_ENDO( ARG_DEFAULT );
    //$$ [1] [正常] [2006-9-14 15:41:46]

    /// 
    TEST_CASE_BEGINO( ARG_DEFAULT );
    //由于合并时会删除完全相同的函数,这里要在堆上生成对象;
    CExFunction* ipOther = new CExFunction();
    CTokenList list;
    CTokenReader reader;
    reader.ReadTokenList(list, "int MyFunc()");
    CExFunction::ParseDeclare(list, TRIM_PUBLIC, *ipOther);
    ipOther->SetDefined(TRUE);
    CTokenList list2;
    reader.ReadTokenList(list2, "int MyFunc(int i)");
    CExFunction::ParseDeclare(list2, TRIM_PUBLIC, *pObj);
    TEST_RUN( pObj->UniteFunction(ipOther) );
    reader.ClearTokenList(list); //!
    reader.ClearTokenList(list2); //!
    TEST_CASE_ENDO( ARG_DEFAULT );
    //$$ [2] [正常] [2006-9-14 17:8:37]

⌨️ 快捷键说明

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