2017年8月28日

(八)cmockery中的calculator和run_tests函数的注释代码

摘要: 所分析的calculator.c和calculator_test.c文件位于 工程中的 cmockery/src/example/ 目录下,是一个相对而言比较全面的样例程序,用到了cmockery项目中的大多数单元测试方法。基本上涵盖了之前所有的样例程序中的用法,还有两组测试是database操作的样例程序没有做分析也不准备去做了。在结束了这一个样例程序的分析之后,大概就可以将整个cmoc... 阅读全文

posted @ 2017-08-28 11:54 cfzhang 阅读(355) 评论(0) 推荐(0) 编辑

(七)cmockery中的key_value分析

摘要: 所分析的key_value.c和key_value_test.c文件位于 工程中的 cmockery/src/example/ 目录下,是关于setup方法和teardown方法的一个应用,其中setup方法是在进行单元测试之前所做的预备工作,teardown是在单元测试之后所做的清理工作。key_value.c#include #include #include typedef struct K... 阅读全文

posted @ 2017-08-28 11:53 cfzhang 阅读(497) 评论(0) 推荐(0) 编辑

(六)cmockery中的assert_macro分析

摘要: 所分析的assert_macro.c和assert_macro_test.c文件位于 工程中的 cmockery/src/example/ 目录下,是关于assert方法的一个应用,可以进行判断指定类型数据的逻辑关系的断言,提供了一组函数如下:断言整数相等或者不相等assert_int_equal(a, b) assert_int_not_equal(a, b) 断言字符串相等或者不相等a... 阅读全文

posted @ 2017-08-28 11:52 cfzhang 阅读(305) 评论(0) 推荐(0) 编辑

(五)cmockery中的assert_module分析

摘要: 所分析的assert_module.c和assert_module_test.c文件位于 工程中的 cmockery/src/example/ 目录下,是关于assert方法的一个应用,可以进行判断assert函数中的参数为True还是False。关于assert(百度百科): 编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形... 阅读全文

posted @ 2017-08-28 11:50 cfzhang 阅读(511) 评论(0) 推荐(0) 编辑

(四)cmockery中allocate_moudle分析

摘要: 所分析的allocate_moudle.c和allocate_moudle_test.c文件位于 工程中的 cmockery/src/example/ 目录下,是关于内存相关的一些测试,比如内存泄露,内存向上向下溢出错误等的检测。样例程序如下:allocate_module.c#ifdef HAVE_CONFIG_H#include "config.h"#endif#ifdef HAVE_... 阅读全文

posted @ 2017-08-28 11:47 cfzhang 阅读(318) 评论(0) 推荐(0) 编辑

(三)cmockery中的消息打印以及可变参数相关总结

摘要: cmockery项目中依赖系统的输出系统实现了自己的打印日志的功能,基本的功能接口如下:// Standard output and error print methods.void print_message(const char* const format, ...);void print_error(const char* const format, ...);void vprint_mes... 阅读全文

posted @ 2017-08-28 11:47 cfzhang 阅读(330) 评论(0) 推荐(0) 编辑

(二)cmockery中run_tests.c分析

摘要: 所分析的run_tests.c文件位于 工程中的 cmockery/src/example/ 目录下,仅仅只有十几行代码,不过可以通过这十几行代码的分析达到管中窥豹的效果;run_tests.c:#include #include #include #include // A test case that does nothing and succeeds.void null_test_succe... 阅读全文

posted @ 2017-08-28 11:45 cfzhang 阅读(469) 评论(0) 推荐(0) 编辑

(一)cmockery的readme翻译

摘要: 关于如何使用cmockery单元测试框架的信息请看readme.md编译---------编译cmockery库和样例程序,运行./configure,然后make。在windows命令行环境下运行vsvar.bat然后进入到当前工程下的windows子文件夹然后运行nmake本代码已经在linux(ubuntu)和windows中使用vc++7和vc++8进行了测试===============... 阅读全文

posted @ 2017-08-28 11:44 cfzhang 阅读(527) 评论(0) 推荐(2) 编辑

沉淀之log4c的list

摘要: log4c中对于链表也实现了一套,可以在src/sd/目录下找到有对应的list.c和list.h两个文件。直接贴代码和注释。list.h#ifndef __sd_list_h#define __sd_list_h#include #include "defs.h"__SD_BEGIN_DECLS/** * 声明list类型,实际定义是在list.c文件里 */typedef struct... 阅读全文

posted @ 2017-08-28 11:43 cfzhang 阅读(177) 评论(0) 推荐(0) 编辑

沉淀之log4c的二次封装

摘要: 老大对log4c做了一下二次封装,将log4c的日志功能引入到我们的项目里面来使用,看了一下他封装的方式,感触还是比较大的:log4c好比一套完整的武术套路,从头打到尾,表演效果很不错;老大封装之后的日志功能,感觉就是将这个套路里面的一拳一脚拆开,在打架的时候拿出来用在恰当的地方。 三个文件,一个path.c、一个log.h、一个log.c都在下面;path.c#include #i... 阅读全文

posted @ 2017-08-28 11:41 cfzhang 阅读(362) 评论(0) 推荐(0) 编辑

沉淀之log4c的stack

摘要: log4c实现了栈操作的一组接口,相关的接口都在头文件里面进行了声明,这里栈的元素为指针,也就是说栈里面放的元素都是指向一个个结构体变量再内存中的位置的指针;另外这个栈是一个动态增长的形式实现的。对于头文件的解释也都以注释的形式写在了代码的注释里面,具体的头文件内容如下:stack.h#ifndef __sd_stack_h#define __sd_stack_h/** * @file s... 阅读全文

posted @ 2017-08-28 11:40 cfzhang 阅读(178) 评论(0) 推荐(0) 编辑

沉淀之log4c的malloc

摘要: 内存分配函数的接口,log4c内部又重新的封装了一下,在内部实现上仍然是采用的系统内存分配的那一套调用接口。重新实现这么一套接口,应该是为了方便调试,保证易用性和稳定下有了提高。 这个封装的内部在分配了之后对于返回值做了检查。malloc.h#ifndef __sd_malloc_h#define __sd_malloc_h#include #include #include "de... 阅读全文

posted @ 2017-08-28 11:38 cfzhang 阅读(209) 评论(0) 推荐(0) 编辑

沉淀之log4c的error

摘要: log4c的实现中在自身调试的时候也实现了一套调试接口,分别是sd_debug和sd_error。在error.h 和 error.c中进行了实现,以下是对于源码的分析:error.h:#ifndef __sd_error_h#define __sd_error_h#include #include "defs.h"extern int sd_debug(const char *fmt, ... 阅读全文

posted @ 2017-08-28 11:37 cfzhang 阅读(261) 评论(0) 推荐(0) 编辑

沉淀之log4c的hash

摘要: 上回书说到,log4c的list模块,咱们书接上回,说一说他的hash模块,仍然用以模块代码进行注释的形式进行。头文件如下:hash.h:/* $Id: hash.h,v 1.4 2005/05/24 15:33:18 legoater Exp $ * * Copyright 2001-2003, Meiosys (www.meiosys.com). All rights reserved... 阅读全文

posted @ 2017-08-28 11:35 cfzhang 阅读(197) 评论(0) 推荐(0) 编辑

沉淀之log4c库

摘要: 本着学习log4c的设计技巧和设计理念,通过浏览博客和阅读代码,加上自己的一些理解,整理下所思和所得。log4c的三个重要概念: category:就是你想写的日志,可以有多个日志,按照调用参数的形式进行制定日志所对应的位置。需要为category指定一个appender,以确定写日志的方式;现在只支持一个category对应一种appender方式。在主页上说是有一对多实现的规划,没有实现... 阅读全文

posted @ 2017-08-28 11:34 cfzhang 阅读(713) 评论(0) 推荐(0) 编辑

cjson工程的readme文件翻译

摘要: 欢迎学习CJSONcJSON 致力于成为轻量级的解析器,只有一个C文件和一个头文件,JSON 格式在http://www.json.org/有更详细的描述。就像XML,但是更简洁,可以用来传输数据,存储内容或者只是用来表达程序的状态首先,我应该如何使用呢? 添加cJSON.c到你的工程中,然后将cJSON.h加入到头文件搜索目录中。 例如,可以这样建立一个测试的应用程序: gcc... 阅读全文

posted @ 2017-08-28 11:33 cfzhang 阅读(438) 评论(0) 推荐(0) 编辑

cjson库的使用以及源码阅读

摘要: cjson是一个用c语言开发的json解析库,免费开源只有一个c文件和一个h文件。json和xml功能相似,可以用来传输数据,存储数据以及表达程序当前的状态。1、下载cjson的源码 https://github.com/DaveGamble/cJSON 2、阅读readme文件可以大概的了解一下cjson的介绍以及使用方法,我尝试着把readme文件做了一下翻译,水平有限,大概意思... 阅读全文

posted @ 2017-08-28 11:32 cfzhang 阅读(2691) 评论(0) 推荐(0) 编辑

tinyhttpd的使用与源码分析

摘要: 本着学习的目的下载到了tinnyhttpd的源码,首先阅读了一下readme文档,以下是tinnyhttpd的readme的大概意思: 这个软件是 J. David Blackstone在1999年写的,根据从http://www.gnu.org/获得的GNU通用公共许可证被允许修改和分发。 如果你使用这个软件或者测试这个代码,我将会非常感激,并想知道关于这件事情,可以联系我jdavi... 阅读全文

posted @ 2017-08-28 11:31 cfzhang 阅读(704) 评论(0) 推荐(0) 编辑

webbench工具使用和源码分析

摘要: Webbench是有名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发.它的帮助文件和文档请到:www.webbench.com上查看.Webbech能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况.webBech的标准测试可以向我们展示服务器的两项 内容:每秒钟相应请求数和每秒钟传输数据量.webbench不但能具... 阅读全文

posted @ 2017-08-28 11:30 cfzhang 阅读(309) 评论(0) 推荐(0) 编辑

一个简单的栈操作

摘要: 一个简单的栈操作,对于什么是栈就不在描述了,具体代码如下:不考虑多线程任务同步情况:#ifndef _STACK_H_#define _STACK_H_#define STACK_INIT(type,size,name) \ type stack_##name[size];\ static int top_##name = 0#define POP(name) \ (top_##name > ... 阅读全文

posted @ 2017-08-28 11:29 cfzhang 阅读(253) 评论(0) 推荐(0) 编辑

导航