Add unit test suite and complete protocol documentation

- Add test framework (test.h) with assertion macros and test runner
- Add comprehensive unit tests (test_network.c) covering:
  - Packet parsing and error handling
  - User registration and authentication
  - Room operations (create, join, leave, delete, list)
  - Direct messaging functionality
  - Message broadcasting
  - Password hashing
- Update Makefile with 'make test' target
- Rewrite PROTOCOL file with complete specification:
  - All 14 packet types with data layouts
  - All error codes with descriptions
  - Typical usage flows
This commit is contained in:
Lorenzo Torres 2026-01-08 15:38:28 +01:00
parent 670e38a105
commit 238eff5bb3
9 changed files with 2156 additions and 27 deletions

53
test.h Normal file
View file

@ -0,0 +1,53 @@
/* Simple unit test framework for asfur */
#ifndef TEST_H
#define TEST_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static int tests_run = 0;
static int tests_passed = 0;
static int tests_failed = 0;
#define TEST_ASSERT(cond, msg) do { \
if (!(cond)) { \
printf(" FAIL: %s\n", msg); \
return 1; \
} \
} while(0)
#define TEST_ASSERT_EQ(a, b, msg) do { \
if ((a) != (b)) { \
printf(" FAIL: %s (expected %d, got %d)\n", msg, (int)(b), (int)(a)); \
return 1; \
} \
} while(0)
#define TEST_ASSERT_STR_EQ(a, b, msg) do { \
if (strcmp((a), (b)) != 0) { \
printf(" FAIL: %s (expected '%s', got '%s')\n", msg, (b), (a)); \
return 1; \
} \
} while(0)
#define RUN_TEST(test_fn) do { \
tests_run++; \
printf("Running %s...\n", #test_fn); \
if (test_fn() == 0) { \
printf(" PASS\n"); \
tests_passed++; \
} else { \
tests_failed++; \
} \
} while(0)
#define TEST_SUMMARY() do { \
printf("\n=== Test Summary ===\n"); \
printf("Total: %d\n", tests_run); \
printf("Passed: %d\n", tests_passed); \
printf("Failed: %d\n", tests_failed); \
return tests_failed > 0 ? 1 : 0; \
} while(0)
#endif