📄 ctokenreadertester.cpp
字号:
/**************************************************
//$$ BEGIN
unsigned_int@UINT$DWORD@0@3@0$1$0xFFFFFFFF
PFReadToken@@1@1@()
int@INT4@0@5@-2147483647$-1$0$1$2147483647
BOOL@@0@2@0$1
CString@@0@3@"Visual Unit"$""$"中文怎么样?"
CTokenList@@1@1@()
POSITION@@0@1@0
LPCTSTR@@0@2@""$0
//$$ END
**************************************************/
/**************************************************
作 者:user1
建立日期:2006-8-14
修改日期:
说 明:测试文件,用于测试[CTokenReader]。
**************************************************/
#include "stdafx.h"
//
/////////////////////////////////////////////////////////////////////////////
#include "CTokenReaderTester.h"
//
/////////////////////////////////////////////////////////////////////////////
void CTokenReaderTester::ClassTest()
{
TEST_SOURCE_NAME(TokenReader.cpp);
CUSTOM_TEST(CTokenReader);
//$$
TEST_CALL_BEGIN(CTokenReader,1,0)
TEST_CALL1(NextToken_())//NextToken()
TEST_CALL1(ReadCodeToken_UINT_PFReadToken_int_BOOL())//ReadCodeToken(UINT,PFReadToken,int,BOOL)
TEST_CALL1(TokenListToString_CStringR_CTokenListR_POSITIONR_UINT_UINT_UINT())//TokenListToString(CString&,CTokenList&,POSITION&,UINT,UINT,UINT)
TEST_CALL1(BeforeNextToken_UINTR())//BeforeNextToken(UINT&)
TEST_CALL1(TokenListToCString_CStringR_CTokenListR_POSITIONR_UINT_UINT_UINT())//TokenListToCString(CString&,CTokenList&,POSITION&,UINT,UINT,UINT)
TEST_CALL1(ReadTokenList_CTokenListR_LPCTSTR())//ReadTokenList(CTokenList&,LPCTSTR)
TEST_CALL1(ClearTokenList_CTokenListR())//ClearTokenList(CTokenList&)
TEST_CALL_END()
//$$
}
//
/////////////////////////////////////////////////////////////////////////////
CTokenReaderTester::CTokenReaderTester()
{
pObj = 0;
}
CTokenReaderTester::~CTokenReaderTester()
{
}
void CTokenReaderTester::BeginCase(int arg)
{
switch(arg)
{
case ARG_DEFAULT:
{
pObj = new TESTCLASS();
break;
}
/*
case :
{
pObj = new TESTCLASS();
break;
}
case :
{
pObj = new TESTCLASS();
break;
}
*/
}
}
void CTokenReaderTester::EndCase(int /*arg*/)
{
delete pObj;
pObj = 0;
}
//自定义测试,用MY_ASSERT(布尔表达式)断言预期输出
/////////////////////////////////////////////////////////////////////////////
void CTokenReaderTester::CustomTest()
{
}
//
/////////////////////////////////////////////////////////////////////////////
void CTokenReaderTester::NextToken_()
{
TEST_BEGIN(CTokenReader::NextToken());
CToken* ret;
//$$CASE_BEGIN(NextToken_())
///
TEST_CASE_BEGINO( ARG_DEFAULT );
pObj->mpCode = NULL;
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret == NULL );
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [1] [正常] [2006-8-14 20:20:8]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "abcde";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( strcmp(ret->GetContent(), "abcde") == 0 );
TEST_ASSERT( ret->GetType() == TT_WORD );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [2] [正常] [2006-8-14 20:12:16]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = " \\\ncde";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( strcmp(ret->GetContent(), "cde") == 0 );
TEST_ASSERT( ret->GetType() == TT_WORD );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [3] [正常] [2006-8-26 19:49:3]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "L\"abcde\"akd";
pObj->mpCode = temp;
pObj->Init();
LPCTSTR out = "L\"abcde\"";
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( strcmp(ret->GetContent(), out) == 0 );
TEST_ASSERT( ret->GetType() == TT_WSTRING );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [4] [正常] [2006-8-16 15:5:10]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "->//dkei\nkkei";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_ARROW );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [5] [正常] [2006-8-15 11:48:28]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "Labcde";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( strcmp(ret->GetContent(), "Labcde") == 0 );
TEST_ASSERT( ret->GetType() == TT_WORD );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [6] [正常] [2006-8-16 14:58:10]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "12345 dk";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_DIGIT );
TEST_ASSERT( strcmp(ret->GetContent(), "12345") == 0 );
TEST_ASSERT( ret->GetType() == TT_DIGIT );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [7] [正常] [2006-8-16 14:58:31]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "12345E1 dk";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_DIGIT );
TEST_ASSERT( strcmp(ret->GetContent(), "12345E1") == 0 );
TEST_ASSERT( ret->GetType() == TT_DIGIT );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [8] [正常] [2006-8-16 14:59:36]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "0x1234 dk";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_DIGIT );
TEST_ASSERT( strcmp(ret->GetContent(), "0x1234") == 0 );
TEST_ASSERT( ret->GetType() == TT_DIGIT );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [9] [正常] [2006-8-16 14:59:51]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "0x12b3a4 dk";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_DIGIT );
TEST_ASSERT( strcmp(ret->GetContent(), "0x12b3a4") == 0 );
TEST_ASSERT( ret->GetType() == TT_DIGIT );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [10] [正常] [2006-8-16 15:0:14]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "<<=";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_LMB_ASSIGN );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [11] [正常] [2006-8-16 15:0:37]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = ">>= i";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_RMB_ASSIGN );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [12] [正常] [2006-8-16 15:1:12]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "->*func*()//dkei\nkkei";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_ARROW_STAR );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [13] [正常] [2006-8-16 15:1:49]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "/*dkei*/kkei";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( strcmp(ret->GetContent(), "/*dkei*/") == 0 );
TEST_ASSERT( ret->GetType() == TT_MULCOMMENT );
TEST_ASSERT( ret->GetLine() == 1 );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [14] [正常] [2006-8-16 15:3:47]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "\"String\"kakd";
pObj->mpCode = temp;
pObj->Init();
LPCTSTR out = "\"String\"";
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( strcmp(ret->GetContent(), out) == 0 );
TEST_ASSERT( ret->GetType() == TT_STRING );
TEST_ASSERT( ret->GetLine() == 1 );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [15] [正常] [2006-8-16 15:7:5]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "\'C\'kakd";
pObj->mpCode = temp;
pObj->Init();
LPCTSTR out = "\'C\'";
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( strcmp(ret->GetContent(), out) == 0 );
TEST_ASSERT( ret->GetType() == TT_DIGIT );
TEST_ASSERT( ret->GetLine() == 1 );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [16] [正常] [2006-8-16 15:8:16]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "*(\'kakd";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_TIMES );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [17] [正常] [2006-8-16 15:8:48]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "<";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_LT );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [18] [正常] [2006-8-16 16:28:36]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = ">> 5 i";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_RMB );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [19] [正常] [2006-8-16 16:29:31]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "<<66";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_LMB );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [20] [正常] [2006-8-16 16:29:56]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "L\'C'kkei";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( strcmp(ret->GetContent(), "L\'C'") == 0 );
TEST_ASSERT( ret->GetType() == TT_DIGIT );
TEST_ASSERT( ret->GetLine() == 1 );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [21] [正常] [2006-8-17 9:32:24]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = ")(20)";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( strcmp(ret->GetContent(), ")") == 0 );
TEST_ASSERT( ret->GetType() == TT_RPARAN );
TEST_ASSERT( ret->GetLine() == 1 );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [22] [正常] [2006-8-28 15:15:15]
/// 跳过连行符
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "\\\rkkei";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_WORD /*读取的下一个token*/ );
TEST_ASSERT( strcmp(ret->GetContent(), "kkei") == 0 );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [23] [正常] [2006-8-29 16:23:38]
///
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "//dkeikkei";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( strcmp(ret->GetContent(), "//dkeikkei") == 0 );
TEST_ASSERT( ret->GetType() == TT_SINCOMMENT );
TEST_ASSERT( ret->GetLine() == 1 );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [24] [正常] [2006-8-29 16:32:0]
/// 跳过连行符
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "\\\r\nkkei";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( ret->GetType() == TT_WORD /*读取的下一个token*/ );
TEST_ASSERT( strcmp(ret->GetContent(), "kkei") == 0 );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [25] [正常] [2006-8-29 16:32:41]
/// 跳过连行符
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "'\\', '\n'";
pObj->mpCode = temp;
pObj->Init();
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( strcmp(ret->GetContent(), "\'\\\'") == 0 );
TEST_ASSERT( ret->GetType() == TT_DIGIT );
TEST_ASSERT( ret->GetLine() == 1 );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [26] [正常] [2006-9-12 15:33:47]
/// 跳过连行符
TEST_CASE_BEGINO( ARG_DEFAULT );
char temp[1024] = "\"include\"";
pObj->mpCode = temp;
pObj->Init();
LPCTSTR out = "\"include\"";
TEST_RUN( ret = pObj->NextToken() );
TEST_ASSERT( strcmp(ret->GetContent(), out) == 0 );
TEST_ASSERT( ret->GetType() == TT_STRING );
TEST_ASSERT( ret->GetLine() == 1 );
delete ret; //!
TEST_CASE_ENDO( ARG_DEFAULT );
//$$ [27] [正常] [2006-9-23 12:15:14]
BVTEST_BEGIN_0(O)
//自动边界测试用例,可用TEST_FILTER()过滤输入数据
//TEST_FILTER();
TEST_RUN( ret = pObj->NextToken() );
//TEST_ASSERT();
BVTEST_END0(O)
//$$ [28] [自动] [2006-8-14 20:12:16]
//$$CASE_END(NextToken_())
TEST_RATE(1000);
TEST_END();
}
//$$NextToken_()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -