`

C 支持动态添加测试数据的测试代码

阅读更多
/下面的定义为了支持可扩增。
//当需要增加一个新的测试用列的时候需要这么做:
//1. 修改 TEST_ARR_SIZE ==> 增加数组的大小  ==> #define TEST_ARR_SIZE 		6//(5+1)
//2.添加一个信的数据组: g_arrTestVal5 ==> int g_arrTestVal5[] = {相关int数据};
//3.往数组g_pnArrTest中,增加一个元素g_arrTestVal5 ==>  int* g_pnArrTest[] = {g_arrTestVal0, g_arrTestVal1, g_arrTestVal2, g_arrTestVal3, g_arrTestVal4, g_arrTestVal5};
//4.在line57 增加: GET_ARR_LEN_CASE(5, nLen);

 

 

#include <assert.h>
#include <iostream>
using namespace std;

//下面的定义为了支持可扩增。
//当需要增加一个新的测试用列的时候需要这么做:
//1. 修改 TEST_ARR_SIZE ==> 增加数组的大小  ==> #define TEST_ARR_SIZE 		6//(5+1)
//2.添加一个信的数据组: g_arrTestVal5 ==> int g_arrTestVal5[] = {相关int数据};
//3.往数组g_pnArrTest中,增加一个元素g_arrTestVal5 ==>  int* g_pnArrTest[] = {g_arrTestVal0, g_arrTestVal1, g_arrTestVal2, g_arrTestVal3, g_arrTestVal4, g_arrTestVal5};
//4.在line57 增加: GET_ARR_LEN_CASE(5, nLen);

//#define TEST_ARR_SIZE  	(sizeof(g_pnArrTest) / sizeof(int*))
#define TEST_ARR_SIZE 		5
#define TEST_ARR_VAL_SIZE(INDEX) 	(sizeof(g_arrTestVal##INDEX) / sizeof(int))
#define GET_ARR_LEN_CASE(INDEX, ARR_LEN) \
	case INDEX:\
	{\
		if ( (INDEX < TEST_ARR_SIZE) && (INDEX >= 0) )\
		{\
			ARR_LEN = TEST_ARR_VAL_SIZE(INDEX);\
		}\
		else\
		{\
			ARR_LEN = 0;\
		}\
		break;\
	}

int g_arrTestVal0[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
int g_arrTestVal1[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int g_arrTestVal2[] = {1, 3, 5, 7, 9, 0, 2, 4, 6, 8, 10};
int g_arrTestVal3[] = {0, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9};
int g_arrTestVal4[] = {5, 4, 3, 2, 1, 0, 6, 7, 8, 9, 10};

int* g_pnArrTest[] = {g_arrTestVal0, g_arrTestVal1, g_arrTestVal2, g_arrTestVal3, g_arrTestVal4};

int GetTestCaseLen()
{
	return TEST_ARR_SIZE;
}

int GetTestArrLen(const int nIndex)
{
	int nLen = 0;
	int nArrLen = TEST_ARR_SIZE;

	cout << "nArrLen = " << nArrLen << endl;

	switch (nIndex)
	{
	GET_ARR_LEN_CASE(0, nLen);
	GET_ARR_LEN_CASE(1, nLen);
	GET_ARR_LEN_CASE(2, nLen);
	GET_ARR_LEN_CASE(3, nLen);
	GET_ARR_LEN_CASE(4, nLen);

	default:
		nLen = 0;
		break;
	}

	return nLen;
}

int* GetTestCase(const int nIndex, int& nLen)
{
	nLen = 0;

	if ( (nIndex < 0) || (nIndex >= (int)TEST_ARR_SIZE) )
	{
		return NULL;
	}

	nLen = GetTestArrLen(nIndex);
	cout << "GetTestArrLen return val:" << nLen << endl;

	return g_pnArrTest[nIndex];
}

void SwapInt(int& a, int& b)
{
	int nTmp = a;
	a = b;
	b = nTmp;
}

bool CompareInt(const int a, const int b)
{
	return a > b;
}

void PrintArr(const int* pnArr, const int nLen)
{
	assert(pnArr && (nLen > 0));

	int i = 0;
	for (i = 0; i < nLen; i++)
	{
		cout << pnArr[i] << "\t";
	}

	cout << endl;
}

int main()
{
	int nArrLen = GetTestCaseLen();
	cout << nArrLen << endl;


	for (int i = 0; i < nArrLen; i++)
	{
		cout << "================= get test case " << i << " =================" << endl;
		int nLen = 0;
		int* pnArr = GetTestCase(i, nLen);

		if (NULL != pnArr)
		{
			PrintArr(pnArr, nLen);
		}

		cout << endl << endl;
	}
}
 
分享到:
评论

相关推荐

    qt调用c语言代码(c语言的代码写在c文件中)

    3. **编译C代码为动态库或静态库**:在完成C语言代码编写后,使用C编译器(如GCC)将其编译为动态库(.so on Linux, .dll on Windows)或静态库(.a on Linux, .lib on Windows)。确保在编译时开启C语言兼容标志,...

    数据结构与算法分析(C语言描述第二版)源代码

    本资源“数据结构与算法分析(C语言描述第二版)源代码”提供了书中所有数据结构的C语言实现,以及配套的测试代码,使得学习者可以直观理解并动手实践这些概念。 1. **数组**:基础的数据结构,用于存储同类型元素...

    CPU支持的AVX版本检测代码

    标题"CPU支持的AVX版本检测代码"指的是一个程序,这个程序可以检测运行它的计算机CPU是否支持AVX以及支持的具体版本。AVX为处理器提供了更宽的寄存器和更强大的运算能力,包括双倍宽度的浮点运算和更多的整数操作。...

    测试程序源代码

    4. 回归测试:每当新的代码被添加或修改时,回归测试会重新运行之前的测试用例,以确保更改没有引入新的错误。 5. 压力测试:测试程序在极端条件下的表现,例如高并发访问、大量数据处理等,以评估其稳定性和性能。...

    栈的链表实现与测试代码(C语言)

    这个项目是学习数据结构和算法的好实例,它展示了如何用C语言实现一个基本的链表栈,并通过测试代码验证其实现的正确性。理解这种实现有助于加深对栈工作原理的理解,也有助于提升C语言编程能力。

    C6678的GPIO输入输出测试代码,基于CCS5.5

    总的来说,"C6678的GPIO输入输出测试代码,基于CCS5.5"这个项目涉及到了嵌入式系统开发的基础技能,包括GPIO的使用、CCS集成开发环境的运用、C语言编程以及硬件接口的调试。对于想要深入理解C6678 DSP以及GPIO操作的...

    三层BP神经网络C语言代码

    C语言写的三层BP神经网络代码,用fisheriris数据集训练和测试网络,也可以用于其他分类问题。 一个输入层,一个隐藏层,一个输出层,各层的节点数都可以设置。属性数据归一化采用Z-score算法,标签数据归一化采用Min...

    C语言的RTP打包代码

    在IT行业中,网络传输协议是实现数据通信的关键技术之一,实时传输协议(Real-time Transport Protocol,...通过深入学习和实践,开发者能够熟练运用C语言实现RTP打包,从而为各种多媒体应用提供稳定的数据传输支持。

    C简易自动化测试框架

    8. **可扩展性**:一个良好的测试框架应该容易扩展,允许添加新的测试功能或适配不同的项目需求。 总之,虽然这个“C简易自动化测试框架”可能仅实现了基础功能,但它仍体现了自动化测试的核心理念。通过理解和学习...

    C语言AES加密解密,CBC模式,256(含测试代码且结果与Java一致)

    `aes256.h`通常包含了函数声明和必要的数据结构定义,而`test.c`则是测试代码,验证了C语言实现的加密结果与Java版本的一致性。 **补码和填充方式:** 由于AES加密需要输入的数据长度是128位(16字节)的倍数,不足...

    MSP430实现温度检测源代码//基于c语言

    【MSP430实现温度检测源代码//基于C语言】这一主题涉及到的是使用MSP430微控制器进行温度监测的系统设计。MSP430是由德州仪器(TI)开发的一系列低功耗、16位的混合信号处理器,广泛应用于各种嵌入式系统,特别是...

    bpsk的C语言代码

    压缩包中的“bpskC++”可能包含实现以上步骤的源代码文件,包括bpsk调制器和解调器的实现,以及可能的测试脚本或数据。通过分析这些代码,你可以更深入地理解bpsk的工作原理及其在C++中的实现细节。同时,这也是一个...

    使用GPU对C语言代码进行加速_c语言代码大全和详细解释

    标题中的“使用GPU对C语言代码进行加速_c语言代码大全和详细解释”表明了本文将探讨如何利用GPU的并行计算能力来优化C语言编写的程序,特别是针对特定任务,如规则匹配。GPU(图形处理器)通常用于处理图形密集型...

    SHA1算法C语言源代码

    5. **测试代码**:为了验证C语言实现的SHA1算法是否正确,通常会包含一些测试用例。这些测试用例可能包括已知输入和对应的哈希值,通过对比计算出的哈希值与预期值来检查算法的正确性。 在压缩包文件"sha1-c"中,你...

    ffmpeg测试代码

    测试代码可能会涉及读取、修改或添加元数据的场景。 7. **并发与多线程**:由于媒体处理往往涉及大量计算,FFmpeg 允许开发者利用多线程提高性能。测试代码可能会演示如何配置并行处理以优化效率。 8. **错误处理*...

    c语言代码的编辑仓库,测试使用.zip

    在本资源"C语言代码的编辑仓库,测试使用.zip"中,包含了一个名为"C_add-master"的子目录,这很可能是某个C语言编程项目的源代码仓库。这个仓库可能用于存放一个C语言开发的软件或工具,重点是进行加法运算或其他与...

    餐厅管理程序c语言代码

    【餐厅管理程序C语言代码】是一个典型的计算机编程项目,它主要使用C语言来实现一个针对餐厅日常运营的管理系统。在C语言中开发这样的系统,程序员需要深入理解C语言的基础语法、数据结构、函数以及文件操作等核心...

    Go-gotests一个从源代码生成Go测试的命令行工具

    3. 查看并完善测试:生成的测试代码可能需要根据具体需求进行调整,例如添加特殊的测试条件或异常处理。 gotests的输出格式可以定制,支持不同的测试风格,例如Go的标准测试库、 testify库或其他自定义的测试模式。...

    json的lib库和测试代码

    `json-c`是一个开源项目,提供了对JSON的支持,包括将JSON对象转换为C的数据结构,反之亦然,同时也支持JSON编码和解码。 `json-c-0.9`这个版本可能包含以下组件: 1. **头文件**:提供API定义,如`json_object.h`...

    CUnit单元测试代码

    CUnit 是一个开源的、基于 C 语言的单元测试框架,它使得 C 语言的开发者可以方便地编写和组织单元测试用例,以确保代码的质量和可靠性。在Ubuntu 10.04系统上,CUnit能够很好地运行,并且与其他开发工具(如GCC...

Global site tag (gtag.js) - Google Analytics