acl/lib_acl/include/unit_test/acl_test_global.h
2014-11-19 00:25:21 +08:00

241 lines
6.9 KiB
C

#ifndef ACL_TEST_GLOBAL_INCLUDE_H
#define ACL_TEST_GLOBAL_INCLUDE_H
# ifdef __plusplus
extern "C" {
# endif
#include "stdlib/acl_define.h"
#include "stdlib/acl_loadcfg.h"
#include "stdlib/acl_array.h"
#include "acl_test_struct.h"
/*----------------------- 内部函数接口 -----------------------------------*/
/* in acl_test_cfg.c */
ACL_API ACL_ARRAY *aut_parse_args_list(const char *str_in);
ACL_API void aut_free_args_list(ACL_ARRAY *a);
/* in acl_test_cfg_general.c */
ACL_API int aut_cfg_add_general_line(const ACL_CFG_LINE *line);
/* in acl_test_inner.c*/
ACL_API AUT_LINE *aut_add_inner_cmd(const ACL_CFG_LINE *line);
/* in acl_test_outer.c */
ACL_API AUT_LINE *aut_add_outer_cmd(const ACL_CFG_LINE *line);
/* in acl_test_token.c */
ACL_API AUT_CMD_TOKEN *aut_line_peer_token(const AUT_LINE *test_line);
ACL_API AUT_LINE *aut_line_peer(const AUT_LINE *test_line);
/* in acl_test_misc.c */
ACL_API void aut_line_free(void *ctx);
/*------------------ 外部可以调用的一些函数接口 ----------------------------*/
/* in acl_test_cfg.c */
/**
* 功能: 读取配置文件
* @param pathname 配置文件名
* @return 0 表示成功, -1 表示失败
*/
ACL_API int aut_cfg_parse(const char *pathname);
/**
* 功能: 打印所有有效的配置行内容
* @return 成功: 0, 失败: -1
*/
ACL_API int aut_cfg_print(void);
/* in acl_test_misc.c */
ACL_API AUT_LINE *aut_line_new(const ACL_CFG_LINE *cfg_line);
/**
* 功能: 获得对应于命令字的配置参数集合的容器, 以动态数组表示
* @param cmd_name 命令字
* @return 成功: 非空指针, 失败: 空指针
*/
ACL_API const ACL_ARRAY *aut_args_get(const char *cmd_name);
/**
* 功能: 获得有效配置项的总条目
* @return 成功: >0, 失败: -1
*/
ACL_API int aut_size(void);
/**
* 功能: 根据下标值取出所对应的有效配置行结构指针
* @param idx 下标索引值
* @return 成功: 非空结构指针, 失败: 空指针
*
*/
ACL_API AUT_LINE *aut_index(int idx);
/**
* 功能: 比较所给的命令是否与 test_line 中所记录的命令相同
* @param test_line: 与某一有效配置行相关的结构指针
* @param cmd_name: 待查询的命令
* @return 如果相等则返回 0, 如果不等则返回非 0
*/
ACL_API int aut_line_cmdcmp(const AUT_LINE *test_line, const char *cmd_name);
/**
* 功能: 比较所给的执行结果值是否与配置文件中所期望的结果值相等
* @param test_line: 与某一有效配置行相关的结构指针
* @param result: 程序某个任务函数的执行结果值
* @return 相等则返回 0, 不相等则返回非 0
*/
ACL_API int aut_line_resultcmp(const AUT_LINE *test_line, int result);
/**
* 功能: 取得该有效配置行在配置文件中的行号位置
* @param test_line: 与某一有效配置行相关的结构指针
* @return 成功: >=0, 该值即为行号, 失败: < 0
*/
ACL_API int aut_line_number(const AUT_LINE *test_line);
/**
* 功能: 取得所给命令行的有效行号
* @param test_line: 与某一有效配置行相关的结构指针
* @return 成功: >=0, 该值即为行号, 失败: < 0
*/
ACL_API int aut_line_valid_linenum(const AUT_LINE *test_line);
/**
* 功能: 获得该配置行的命令字
* @param test_line: 与某一有效配置行相关的结构指针
* @return 相等返回 0, 不等则返回非 0
*/
ACL_API const char *aut_line_cmdname(const AUT_LINE *test_line);
/**
* 功能: 返回该配置行中参数的个数
* @param test_line: 与某一有效配置行相关的结构指针
* @return 成功: >= 0, 失败: -1
*/
ACL_API int aut_line_argc(const AUT_LINE *test_line);
/**
* 功能: 读取配置文件行中的参数值
* @param test_line AUT_LINE 结构指针
* @param name 要查找的关建字
* @return 成功: 非空指针, 失败: 空指针
*/
ACL_API const char *aut_line_getvalue(const AUT_LINE *test_line, const char *name);
/**
* 功能: 返回该配置行的内容
* @param test_line: 与某一有效配置行相关的结构指针
* @return 成功: 非空指针, 失败: 空指针
*/
ACL_API const char *aut_line_argstr(const AUT_LINE *test_line);
/**
* 功能: 返回该配置行中期望的执行结果值
* @param test_line: 与某一有效配置行相关的结构指针
* @return 期望的执行结果值
* 说明: 没有出错的情况, 如果传入的参数非法则返回 -1, 但无法区分该 -1 值是
* 非法值还是期望的执行结果值
*/
ACL_API int aut_line_result(const AUT_LINE *test_line);
/**
* 功能: 是否遇到了配置行中的结束字段
* @param test_line: 与某一有效配置行相关的结构指针
* @return 是: 1, 否: 0
*/
ACL_API int aut_line_stop(const AUT_LINE *test_line);
/**
* 功能: 内部保留字段, 遇到此内部保留配置行则需要跳过
* @param test_line: 与某一有效配置行相关的结构指针
* @return 是: 1, 否: 0
*/
ACL_API int aut_line_reserved(AUT_LINE *test_line);
/**
* 功能: 调用者可以把自己的参数添加到 test_line 之中
* @param test_line: 与某一有效配置行相关的结构指针
* @param arg: 用户要添加的参数
* @return 成功: 0, 失败: -1
*/
ACL_API int aut_line_add_arg(AUT_LINE *test_line, void *arg);
/**
* 功能: 从 test_line 删除用户自己的参数
* @param test_line: 与某一有效配置行相关的结构指针
* @param free_fn: 用户自己的析构函数
*/
ACL_API void aut_line_del_arg(AUT_LINE *test_line, void (*free_fn) (void *));
/**
* 功能: 从 test_line 中取出用户自己的参数
* @param test_line: 与某一有效配置行相关的结构指针
* @return 成功: 非空指针, 如果返回指针为空则有可能是内部错误或本来就是空
*/
ACL_API void *aut_line_get_arg(const AUT_LINE *test_line);
/**
* 功能: 取得所给命令行的结尾行
* @param start_linenum 命令开始执行点所在行号
* @return >= 0 ok; < 0 未找到
*/
ACL_API int aut_end_linenum(int start_linenum);
/**
* 功能: 从当前所提供的 test_line 起, 一直向下找到某个与所提供标志位相同的
* test_line.
* @param test_line: 与某一有效配置行相关的结构指针
* @param flag: defined as AUT_FLAG_ in acl_test_struct.h
* @return != NULL, ok find it; == NULL, not found.
*/
ACL_API const AUT_LINE *aut_lookup_from_line(const AUT_LINE *test_line, int flag);
/* in acl_test_runner.c */
/**
* 功能 执行所有注册的测试函数, 如果有任何一个任务执行的结果与预期结果不一致则退
* 出执行
* @return 成功: 0, 失败: -1
*/
ACL_API int aut_start(void);
/**
* 测试过程结束后需要调用此函数以释放一些内存资源
*/
ACL_API void aut_stop(void);
/**
* 功能 将需要进行单元测试的任务函数注册
* @param test_fn_tab 单元测试函数结构数组
*/
ACL_API void aut_register(const AUT_FN_ITEM test_fn_tab[]);
/* in acl_test_loop.c */
ACL_API AUT_LINE *aut_loop_make_begin(const ACL_CFG_LINE *cfg_line);
ACL_API AUT_LINE *aut_loop_make_break(const ACL_CFG_LINE *cfg_line);
ACL_API AUT_LINE *aut_loop_make_end(const ACL_CFG_LINE *cfg_line);
ACL_API const AUT_LINE *aut_loop_end(const AUT_LINE *test_begin);
ACL_API int aut_loop_count(const AUT_LINE *test_line);
ACL_API int aut_loop_from(const AUT_LINE *test_line);
ACL_API int aut_loop_to(const AUT_LINE *test_line);
/* in acl_test_log.c */
ACL_API int aut_log_open(const char *pathname);
ACL_API void aut_log_info(const char *format, ...);
ACL_API void aut_log_warn(const char *format, ...);
ACL_API void aut_log_error(const char *format, ...);
ACL_API void aut_log_fatal(const char *format, ...);
ACL_API void aut_log_panic(const char *format, ...);
# ifdef __plusplus
}
# endif
#endif