#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