浏览代码

feat: 添加md5测试

SongZihuan 3 年之前
父节点
当前提交
b234a6d231
共有 5 个文件被更改,包括 24 次插入6 次删除
  1. 2 2
      include/tool/md5.h
  2. 4 3
      src/tool/md5.c
  3. 3 1
      test/src/CMakeLists.txt
  4. 1 0
      test/src/README
  5. 14 0
      test/src/tool_md5.c

+ 2 - 2
include/tool/md5.h

@@ -5,9 +5,9 @@
 /* md5计算工具 */
 /* md5计算工具 */
 #define READ_DATA_SIZE	(1024)
 #define READ_DATA_SIZE	(1024)
 #define MD5_SIZE (16)
 #define MD5_SIZE (16)
-#define MD5_STR_LEN (MD5_SIZE * 2)
+#define MD5_STR_LEN (MD5_SIZE * 2)  // md5str的长度
 #define MD5_STRING (MD5_STR_LEN + 1)
 #define MD5_STRING (MD5_STR_LEN + 1)
 
 
-AFUN_TOOL_EXPORT int getFileMd5(const char *path, char *md5str);
+AFUN_TOOL_EXPORT char *getFileMd5(const char *path);
 
 
 #endif //AFUN_MD5_H
 #endif //AFUN_MD5_H

+ 4 - 3
src/tool/md5.c

@@ -190,7 +190,7 @@ static void MD5Transform(unsigned int state[4], unsigned char block[64]) {
 }
 }
 
 
 
 
-int getFileMd5(const char *path, char *md5str) {
+char *getFileMd5(const char *path) {
     FILE *fd;
     FILE *fd;
 
 
     unsigned long ret;
     unsigned long ret;
@@ -199,8 +199,9 @@ int getFileMd5(const char *path, char *md5str) {
     MD5_CTX md5;
     MD5_CTX md5;
 
 
     if ((fd = fopen(path, "rb")) == NULL)
     if ((fd = fopen(path, "rb")) == NULL)
-        return -1;
+        return NULL;
 
 
+    char *md5str = calloc(MD5_STRING, sizeof(char));
     MD5Init(&md5);
     MD5Init(&md5);
     while (1) {
     while (1) {
         ret = fread(data, 1, READ_DATA_SIZE, fd);
         ret = fread(data, 1, READ_DATA_SIZE, fd);
@@ -215,5 +216,5 @@ int getFileMd5(const char *path, char *md5str) {
     for(int i = 0; i < MD5_SIZE; i++)
     for(int i = 0; i < MD5_SIZE; i++)
         snprintf(md5str + i * 2, 2 + 1, "%02x", md5_value[i]);
         snprintf(md5str + i * 2, 2 + 1, "%02x", md5_value[i]);
 
 
-    return 0;
+    return md5str;
 }
 }

+ 3 - 1
test/src/CMakeLists.txt

@@ -11,11 +11,13 @@ foreach(src IN LISTS src_list)
 endforeach()
 endforeach()
 
 
 # tool 相关测试
 # tool 相关测试
+file(MD5 "${CMAKE_CURRENT_LIST_DIR}/../share/md5.txt" TOOL_MD5_ANS)
 add_new_test(tool_mem COMMAND "$<TARGET_FILE:tool_mem>")
 add_new_test(tool_mem COMMAND "$<TARGET_FILE:tool_mem>")
 add_new_test(tool_byte COMMAND "$<TARGET_FILE:tool_byte>")
 add_new_test(tool_byte COMMAND "$<TARGET_FILE:tool_byte>")
 add_new_test(tool_dlc COMMAND "$<TARGET_FILE:tool_byte>" "$<TARGET_FILE:dlc_lib>")
 add_new_test(tool_dlc COMMAND "$<TARGET_FILE:tool_byte>" "$<TARGET_FILE:dlc_lib>")
 add_new_test(tool_regex COMMAND "$<TARGET_FILE:tool_regex>")
 add_new_test(tool_regex COMMAND "$<TARGET_FILE:tool_regex>")
-set_test_label(tool tool_mem tool_byte tool_dlc tool_regex)
+add_new_test(tool_md5 COMMAND "$<TARGET_FILE:tool_md5>" "${TOOL_MD5_ANS}" "${CMAKE_CURRENT_LIST_DIR}/../share/md5.txt")
+set_test_label(tool tool_mem tool_byte tool_dlc tool_regex tool_md5)
 
 
 # core 相关测试
 # core 相关测试
 add_new_test(byte_code COMMAND "$<TARGET_FILE:byte_code>")
 add_new_test(byte_code COMMAND "$<TARGET_FILE:byte_code>")

+ 1 - 0
test/src/README

@@ -6,6 +6,7 @@ tool_mem  测试内存管理函数
 tool_dlc  测试动态库导入函数 dlc
 tool_dlc  测试动态库导入函数 dlc
 tool_regex  测试正则表达式库
 tool_regex  测试正则表达式库
 tool_byte  测试字节 IO 函数
 tool_byte  测试字节 IO 函数
+tool_md5  测试 md5 函数
 
 
 byte_code  测试字节码写入读取
 byte_code  测试字节码写入读取
 reader  测试文件读取
 reader  测试文件读取

+ 14 - 0
test/src/tool_md5.c

@@ -0,0 +1,14 @@
+#include "tool.h"
+
+int main(int argc, char **argv) {
+    if (argc != 3)
+        return 1;
+
+    char *md5_answer = argv[1];
+    char *file_path = argv[2];
+    char *my_md5 = getFileMd5(file_path);
+
+    if (EQ_STR(my_md5, md5_answer))
+        return 0;
+    return 1;  // 不相等, 表示错误
+}