c语言单元测试(cunit)打桩,如何写打桩文件

/**
 *	COPYRIGHT NOTICE
 *	Copyright (c) 2010,
 *	ALL rights reserved.
 *
 *@file stub_test.c
 *本文件定义了malloc() regcomp() regexec() 函数的打桩函数
 *
 *	版本    作者			日期			修订说明
 *	1.0.0   t 2018-08-01		最初版本
 *
 */

#include
#include
#include
#include

char case_name[128] = {0};

void set_case_name(char *name)
{
    memset(case_name, 0, sizeof(case_name));
    strncpy(case_name, name, sizeof(case_name));
    return;
}

int is_case(char *name)
{

    int ret = strncmp(case_name, name, sizeof(case_name));
    if(0 == ret)
    {
        return 1;
    }

    return 0;
}

/** malloc的桩函数
*
* 作者     日期        问题单号      修订说明
*
*
*/

void * stub_malloc(int __size)
{
    if(is_case("UT_analy_bi_bst_tree"))
    {
        return NULL;
    }

	return malloc(__size);
}

/** regcomp的桩函数
*
* 作者     日期        问题单号      修订说明
*
*
*/

int stub_regcomp(regex_t *preg,const char * regex,int cflags   )
{
    if(is_case("UT_analy_parse_order"))
    {
        return -1;
    }
    else
   {
        return regcomp(preg,regex,cflags);
    }
}

/** regexec的桩函数
*
* 作者     日期        问题单号      修订说明
*
*
*/

int stub_regexec(const regex_t* preg,const char *string,size_t nmatch,regmatch_t pmatch[],int eflags)
{
    if(is_case("UT_analy_parse_order_regexec"))
    {
       return REG_ESPACE;
    }
    else
    {
        return regexec(preg,string,nmatch,pmatch,eflags);
    }
}

如何用cunit进行单元测试请参考:

https://www.cnblogs.com/linux-sir/archive/2012/08/25/2654557.html

你可能感兴趣的:(c)