libicmp/tests/error/test_error.c
lohhiiccc 532c4b5dc7 feat(error): add ICMP error utilities with tests
- Added `icmp_set_error`.
 - Added `icmp_strerror`.
 - Added unit tests.
2026-01-24 22:38:49 +01:00

58 lines
1.3 KiB
C

#include <criterion/criterion.h>
#include <string.h>
#include "internal/icmp_internal.h"
#include "icmp.h"
/* Test 1: set_error sets code and message */
Test(error, set_error_basic)
{
struct icmp_handle h = {0};
icmp_set_error(&h, ICMP_ERR_SOCKET, "Test error message");
cr_assert_eq(h.last_error, ICMP_ERR_SOCKET);
cr_assert_str_eq(h.error_msg, "Test error message");
}
/* Test 3: set_error with NULL message clears error_msg */
Test(error, set_error_null_message)
{
struct icmp_handle h = {0};
strcpy(h.error_msg, "Old error");
icmp_set_error(&h, ICMP_ERR_SEND, NULL);
cr_assert_eq(h.last_error, ICMP_ERR_SEND);
cr_assert_eq(h.error_msg[0], '\0');
}
/* Test 4: strerror returns message from handle */
Test(error, strerror_returns_message)
{
struct icmp_handle h = {0};
h.last_error = ICMP_ERR_PERMISSION;
strcpy(h.error_msg, "Permission denied");
const char *msg = icmp_strerror((icmp_handle_t *)&h);
cr_assert_str_eq(msg, "Permission denied");
}
/* Test 5: strerror with NULL handle */
Test(error, strerror_null_handle)
{
const char *msg = icmp_strerror(NULL);
cr_assert_str_eq(msg, "Invalid handle");
}
/* Test 6: strerror with ICMP_OK */
Test(error, strerror_no_error)
{
struct icmp_handle h = {0};
h.last_error = ICMP_OK;
const char *msg = icmp_strerror((icmp_handle_t *)&h);
cr_assert_str_eq(msg, "No error");
}