|
#ifndef TEST_FRAMEWORK_H
|
|
#define TEST_FRAMEWORK_H
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
extern int tests_run;
|
|
extern int tests_passed;
|
|
extern int tests_failed;
|
|
|
|
#define TEST_ASSERT(condition, message) do { \
|
|
tests_run++; \
|
|
if (condition) { \
|
|
tests_passed++; \
|
|
printf(" [PASS] %s\n", message); \
|
|
} else { \
|
|
tests_failed++; \
|
|
printf(" [FAIL] %s (line %d)\n", message, __LINE__); \
|
|
} \
|
|
} while(0)
|
|
|
|
#define TEST_ASSERT_EQ(expected, actual, message) do { \
|
|
tests_run++; \
|
|
if ((expected) == (actual)) { \
|
|
tests_passed++; \
|
|
printf(" [PASS] %s\n", message); \
|
|
} else { \
|
|
tests_failed++; \
|
|
printf(" [FAIL] %s (expected %d, got %d, line %d)\n", message, (int)(expected), (int)(actual), __LINE__); \
|
|
} \
|
|
} while(0)
|
|
|
|
#define TEST_ASSERT_STR_EQ(expected, actual, message) do { \
|
|
tests_run++; \
|
|
if (strcmp(expected, actual) == 0) { \
|
|
tests_passed++; \
|
|
printf(" [PASS] %s\n", message); \
|
|
} else { \
|
|
tests_failed++; \
|
|
printf(" [FAIL] %s (expected '%s', got '%s', line %d)\n", message, expected, actual, __LINE__); \
|
|
} \
|
|
} while(0)
|
|
|
|
#define TEST_SUITE_BEGIN(name) do { \
|
|
printf("\n=== Test Suite: %s ===\n", name); \
|
|
} while(0)
|
|
|
|
#define TEST_SUITE_END() do { \
|
|
printf("\n"); \
|
|
} while(0)
|
|
|
|
void test_summary(void);
|
|
|
|
#endif
|