cocoon/tests/unit/test_log.c
xfy911 3c521823b1 feat(tests): 添加 config 和 log 模块单元测试 + http.c 缓冲区溢出防护
- 新增 test_log.c: 8 个测试覆盖日志级别 getter/setter、前缀设置、持久化
- 新增 test_config.c: 11 个测试覆盖 JSON 配置加载、注释支持、错误处理、merge 覆盖逻辑
- http.c: 修复 response header 格式化中的 snprintf 边界条件,防止缓冲区溢出
- Makefile: 添加 test_log、test_config 编译规则,更新 .PHONY 列表
2026-06-04 00:02:18 +08:00

82 lines
2.0 KiB
C

#include "unity.h"
#include "log.h"
/* ===== log_get_level / log_set_level ===== */
void test_default_level_is_info(void) {
/* 静态全局变量默认初始化为 LOG_LEVEL_INFO */
TEST_ASSERT_EQUAL(LOG_LEVEL_INFO, log_get_level());
}
void test_set_level_error(void) {
log_set_level(LOG_LEVEL_ERROR);
TEST_ASSERT_EQUAL(LOG_LEVEL_ERROR, log_get_level());
}
void test_set_level_warn(void) {
log_set_level(LOG_LEVEL_WARN);
TEST_ASSERT_EQUAL(LOG_LEVEL_WARN, log_get_level());
}
void test_set_level_debug(void) {
log_set_level(LOG_LEVEL_DEBUG);
TEST_ASSERT_EQUAL(LOG_LEVEL_DEBUG, log_get_level());
}
void test_set_level_info(void) {
log_set_level(LOG_LEVEL_INFO);
TEST_ASSERT_EQUAL(LOG_LEVEL_INFO, log_get_level());
}
/* ===== log_set_prefix ===== */
void test_set_prefix(void) {
log_set_prefix("[Test]");
/* 无返回值,仅确认不 crash */
TEST_ASSERT_EQUAL(LOG_LEVEL_INFO, log_get_level());
}
void test_set_prefix_null(void) {
log_set_prefix(NULL);
/* NULL 表示无前缀,不 crash */
TEST_ASSERT_EQUAL(LOG_LEVEL_INFO, log_get_level());
}
/* ===== 边界:多次设置 ===== */
void test_level_persistence(void) {
log_set_level(LOG_LEVEL_DEBUG);
TEST_ASSERT_EQUAL(LOG_LEVEL_DEBUG, log_get_level());
log_set_level(LOG_LEVEL_ERROR);
TEST_ASSERT_EQUAL(LOG_LEVEL_ERROR, log_get_level());
log_set_level(LOG_LEVEL_INFO);
TEST_ASSERT_EQUAL(LOG_LEVEL_INFO, log_get_level());
}
void setUp(void) {
/* 每个测试前重置为默认 */
log_set_level(LOG_LEVEL_INFO);
log_set_prefix("[Cocoon]");
}
void tearDown(void) {
/* 每个测试后重置 */
log_set_level(LOG_LEVEL_INFO);
log_set_prefix("[Cocoon]");
}
int main(void) {
UNITY_BEGIN();
RUN_TEST(test_default_level_is_info);
RUN_TEST(test_set_level_error);
RUN_TEST(test_set_level_warn);
RUN_TEST(test_set_level_debug);
RUN_TEST(test_set_level_info);
RUN_TEST(test_set_prefix);
RUN_TEST(test_set_prefix_null);
RUN_TEST(test_level_persistence);
return UNITY_END();
}