51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2000|回复: 0
打印 上一主题 下一主题

TCL SHELL教学版的改良

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-5-28 18:56:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
// MyCounter.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "MyCounter.h"
#include "tcl.h"
#include "test.h"
#include "stdio.h"
#include "stdlib.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

//函数声明
int Tcl_AppInit(Tcl_Interp *interp);
int TclEx_Counter(ClientData clientdata,Tcl_Interp *interp,int argc,char*argv[]);



//变量声明
extern int g_iBlankLineNum;
extern int g_iCodeLineNum;
extern int g_iCommLineNum;
extern int g_iTotalLineNum;

extern BOOL g_bStatBlankLineFlag;
extern BOOL g_bStatCodeLineFlag;
extern BOOL g_bStatCommLineFlag;
extern BOOL g_bStatTotalLineFlag;


//创建自己的shell
void main(int argc, char *argv[])
{
        Tcl_Main(argc,argv,Tcl_AppInit);
        exit(0);
}

//shell函数的实现。
int Tcl_AppInit(Tcl_Interp *interp)
{
        //解释器的初始化
        Tcl_Init(interp);
        //扩展命令的注册
        Tcl_CreateCommand(interp,"COUNTER",TclEx_Counter,NULL,NULL);
        return TCL_OK;
}

//扩展命令的实现
int TclEx_Counter(ClientData clientdata,Tcl_Interp *interp,int argc,char *argv[])
{
        int aRet;        //空行行实际输出
        int bRet;        //注释行实际输出
        int cRet;        //代码行实际输出
        int dRet;        //总行数实际输出

        int aExceptedRet;        //期望空行输出
        int bExceptedRet;        //期望注释行输出
        int cExceptedRet;        //期望代码行输出
        int dExceptedRet;        //期望总行输出


        //定义被测试对象
        CTest        Mytest;

        //第一步检查参数个数
        if(10 != argc)
        {
                interp->result ="paras error";
                return TCL_OK;
        }

        //第二步取出参数
        Mytest.g_szStatFileName = argv[1];


        //取统计空行标志位
        if (TCL_OK != Tcl_GetInt(interp,argv[2],&g_bStatBlankLineFlag))
        {
                interp->result = "para2 error(BlankLineFlag)";
                return TCL_OK;
        }

        //取统计注释行标志位
        if (TCL_OK != Tcl_GetInt(interp,argv[3],&g_bStatCommLineFlag))
        {
                interp->result ="para3 eroor(CommLineFlag)";
                return TCL_OK;
        }

        //取统计代码行标志位
        if (TCL_OK != Tcl_GetInt(interp,argv[4],&g_bStatCodeLineFlag))
        {
                interp->result= "para4 error(Codelineflag)";
                return TCL_OK;
        }

        //取统计总行标志位
        if (TCL_OK != Tcl_GetInt(interp,argv[5],&g_bStatTotalLineFlag))
        {
                interp->result= "para5 error(StatTotalLineFlag)";
                return TCL_OK;
        }
       
        //取期望输出的空行数
        if (TCL_OK != Tcl_GetInt(interp,argv[6],&aExceptedRet))
        {
                interp->result ="para 6 error(aExceptedRet)";
                return TCL_OK;
        }

        //取期望输出的注释行数
        if (TCL_OK != Tcl_GetInt(interp,argv[7],&bExceptedRet))
        {
                interp->result= "para 7 error(bExceptedRet)";
                return TCL_OK;
        }

        //取期望输出的代码行数
        if (TCL_OK != Tcl_GetInt(interp,argv[8],&cExceptedRet))
        {
                interp->result= "para 8 error(cExceptedRet)";
                return TCL_OK;
        }
       
        //取期望输出的总行数
        if (TCL_OK != Tcl_GetInt(interp,argv[9],&dExceptedRet))
        {
                interp->result ="para 9 error(dExceptedRet)";
                return TCL_OK;
        }

        //调用被测试函数

        Mytest.MainStatFun();


        //取得函数执行后的值
        aRet=g_iBlankLineNum;
        bRet=g_iCommLineNum;
        cRet=g_iCodeLineNum;
        dRet=g_iTotalLineNum;


        //测试结果比较

        if ((aRet != aExceptedRet) || (bRet != bExceptedRet)
                || (cRet != cExceptedRet) || (dRet != dExceptedRet))
        {
                interp->result = "test fail the NO is:";
        }
        else
        {
                interp->result = "test pass the NO is:";
        }
        return TCL_OK;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-20 12:31 , Processed in 0.064783 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表