701c644408
Replace log_message with log_debug/info/warn/err and a level filter controlled by logger_set_level. Extract the printf sink into log_write so CMock can intercept it in test_logger. Add 9 tests covering emit and suppression behaviour per level.
74 lines
1.9 KiB
C
74 lines
1.9 KiB
C
#include "unity.h"
|
|
#include "ctdd/logger.h"
|
|
#include "Mocklog_write.h"
|
|
|
|
void setUp(void) { Mocklog_write_Init(); logger_set_level(LOG_DEBUG); }
|
|
void tearDown(void) { Mocklog_write_Verify(); Mocklog_write_Destroy(); }
|
|
|
|
void test_log_debug_emits_at_debug_level(void) {
|
|
log_write_Expect("[DEBUG] hello");
|
|
log_debug("hello");
|
|
}
|
|
|
|
void test_log_info_emits_at_debug_level(void) {
|
|
log_write_Expect("[INFO] world");
|
|
log_info("world");
|
|
}
|
|
|
|
void test_log_warn_emits_at_warn_level(void) {
|
|
logger_set_level(LOG_WARN);
|
|
log_write_Expect("[WARN] alert");
|
|
log_warn("alert");
|
|
}
|
|
|
|
void test_log_err_emits_at_warn_level(void) {
|
|
logger_set_level(LOG_WARN);
|
|
log_write_Expect("[ERROR] fatal");
|
|
log_err("fatal");
|
|
}
|
|
|
|
void test_log_debug_suppressed_at_info_level(void) {
|
|
logger_set_level(LOG_INFO);
|
|
log_debug("silent");
|
|
}
|
|
|
|
void test_log_info_suppressed_at_warn_level(void) {
|
|
logger_set_level(LOG_WARN);
|
|
log_info("silent");
|
|
}
|
|
|
|
void test_log_warn_suppressed_at_error_level(void) {
|
|
logger_set_level(LOG_ERROR);
|
|
log_warn("silent");
|
|
}
|
|
|
|
void test_log_none_suppresses_all(void) {
|
|
logger_set_level(LOG_NONE);
|
|
log_debug("silent");
|
|
log_info("silent");
|
|
log_warn("silent");
|
|
log_err("silent");
|
|
}
|
|
|
|
void test_level_can_be_raised_then_lowered(void) {
|
|
logger_set_level(LOG_ERROR);
|
|
log_info("silent");
|
|
logger_set_level(LOG_DEBUG);
|
|
log_write_Expect("[INFO] now visible");
|
|
log_info("now visible");
|
|
}
|
|
|
|
int main(void) {
|
|
UNITY_BEGIN();
|
|
RUN_TEST(test_log_debug_emits_at_debug_level);
|
|
RUN_TEST(test_log_info_emits_at_debug_level);
|
|
RUN_TEST(test_log_warn_emits_at_warn_level);
|
|
RUN_TEST(test_log_err_emits_at_warn_level);
|
|
RUN_TEST(test_log_debug_suppressed_at_info_level);
|
|
RUN_TEST(test_log_info_suppressed_at_warn_level);
|
|
RUN_TEST(test_log_warn_suppressed_at_error_level);
|
|
RUN_TEST(test_log_none_suppresses_all);
|
|
RUN_TEST(test_level_can_be_raised_then_lowered);
|
|
return UNITY_END();
|
|
}
|