#include "test.h" #include "log.h" #include static char s_lastLoggedError[256]; static void mock_log(const char* msg) { strncpy(s_lastLoggedError, msg, sizeof(s_lastLoggedError) - 1); s_lastLoggedError[sizeof(s_lastLoggedError) - 1] = '\0'; } static void test_log_error(void) { log_set_output(mock_log); memset(s_lastLoggedError, 0, sizeof(s_lastLoggedError)); log_error("test error message"); assert_str("test error message", s_lastLoggedError, "expected 'test error message'"); log_set_output(NULL); // Reset to default } static void test_log_on_line(void) { const char* expected = "--- test.c ---\n" "1| int main() []\n" " ^^\n" " unexpected token\n"; log_on_line("test.c", "int main() []", 1, 12, 13, "unexpected token"); assert_log(expected, "expected formatted error message"); log_clear(); const char* expected2 = "--- test.c ---\n" "1| int main() []\n" " ^^\n" " unexpected token 'x'\n"; log_on_line("test.c", "int main() []", 1, 12, 13, "unexpected token '%c'", 'x'); assert_log(expected2, "expected formatted error message with variadic args"); }