• C语言实现通用链表初步(三)----单元测试


    前两节,我们已经完成了链表的一些操作,快来测试一下吧。

    这里使用的单元测试工具名字叫“check”。


    START_TEST(my_slist_1)
    {
    	struct student students[8] = {{"WangDong",18},{"LiuMing",19},{"SunYazhou",21},{"ChenYu",27},{"LiuXuewei",28},
    	{"ZhangGuorong",47},{"LiuDehua",53},{"WangGuozhen",48}};
    	struct slist_info list;
    	slist_init(&list);
    	int i = 0;
    	for(;i<sizeof(students)/sizeof(students[0]);++i)
    		list.insert_head(students+i,&list);
    	list.for_each(&list,print_student);

    我们先定义了一个数组,里面存放了姓名,年龄。接下来定义一个链表,并初始化。然后调用插入方法,依次插入。遍历一下,打印出来:

    void print_student(void *data)
    {
    	struct student *p = data;
    	printf("Name: %15s  Age:%d
    ",p->name,p->age);
    	
    }

    用到了这个回调函数。看看打印的结果:

    Name:     WangGuozhen  Age:48

    Name:        LiuDehua  Age:53

    Name:    ZhangGuorong  Age:47

    Name:       LiuXuewei  Age:28

    Name:          ChenYu  Age:27

    Name:       SunYazhou  Age:21

    Name:         LiuMing  Age:19

    Name:        WangDong  Age:18


    接着刚才这个测试用例,

    struct node_info *p = list.find(&list,compare_student,&students[3]);
    	list.del(p,&list);
    	list.for_each(&list,print_student);

    我们寻找某个节点(ChenYu),然后删除。

    比较的回调函数是:

    int compare_student(void *dest,void *src)
    {
    	struct student *p1 = dest;
    	struct student *p2 = src;
    	if(strcmp(p1->name,p2->name)==0)
    		return 1;
    	else
    		return 0;
    }


    结果如图:

    Name:     WangGuozhen  Age:48

    Name:        LiuDehua  Age:53

    Name:    ZhangGuorong  Age:47

    Name:       LiuXuewei  Age:28

    Name:       SunYazhou  Age:21

    Name:         LiuMing  Age:19

    Name:        WangDong  Age:18


    再测试一下反转:

    list.invert(&list);
    	list.for_each_safe(&list,print_student);
    }
    END_TEST

    结果是:

    Name:        WangDong  Age:18

    Name:         LiuMing  Age:19

    Name:       SunYazhou  Age:21

    Name:       LiuXuewei  Age:28

    Name:    ZhangGuorong  Age:47

    Name:        LiuDehua  Age:53

    Name:     WangGuozhen  Age:48

    测试成功!


  • 相关阅读:
    监控Linux系统性能命令---sar
    用SecureCRT来上传和下载文件 rz sz
    CentOS7 Firewall NAT 及端口映射
    CentOS 修改主机名
    CentOS 6.X如何更改网卡名称
    MySQL数据操作
    mysql如何修改数据表
    Zabbix图形中中文字体显示方块
    Linux虚拟机模板的创建
    Java web项目JXl导出excel,(从eclipse上移动到tomact服务器上,之路径更改)
  • 原文地址:https://www.cnblogs.com/longintchar/p/5224441.html
Copyright © 2020-2023  润新知