Skip to content

Commit 29b61f1

Browse files
committed
Add missing file
1 parent 24c8123 commit 29b61f1

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

src/mtest.h

+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <string.h>
4+
5+
// Colors for test output
6+
#define MANSI_COLOR_RED "\x1b[31m"
7+
#define MANSI_COLOR_GREEN "\x1b[32m"
8+
#define MANSI_COLOR_RESET "\x1b[0m"
9+
10+
// Counter for total tests run
11+
static int m_total_tests = 0;
12+
static int m_passed_tests = 0;
13+
14+
// Print test results
15+
#define MTEST_PRINT_RESULTS() \
16+
MLogf("\nTest Results: %d/%d passed\n", m_passed_tests, m_total_tests)
17+
18+
// Assert equality for integers
19+
#define MASSERT_INT_EQ(actual, expected) do { \
20+
m_total_tests++; \
21+
if ((expected) == (actual)) { \
22+
m_passed_tests++; \
23+
MLogf(MANSI_COLOR_GREEN "PASS" MANSI_COLOR_RESET ": %s:%d - Expected %d, got %d", \
24+
__FILE__, __LINE__, (expected), (actual)); \
25+
} else { \
26+
MLogf(MANSI_COLOR_RED "FAIL" MANSI_COLOR_RESET ": %s:%d - Expected %d, got %d", \
27+
__FILE__, __LINE__, (expected), (actual)); \
28+
} \
29+
} while(0)
30+
31+
// Assert equality for strings
32+
#define MASSERT_STR_EQUALS(expected, actual) do { \
33+
m_total_tests++; \
34+
if (strcmp((expected), (actual)) == 0) { \
35+
m_passed_tests++; \
36+
MLogf(MANSI_COLOR_GREEN "PASS" MANSI_COLOR_RESET ": %s:%d - Expected \"%s\", got \"%s\"\n", \
37+
__FILE__, __LINE__, (expected), (actual)); \
38+
} else { \
39+
MLogf(MANSI_COLOR_RED "FAIL" MANSI_COLOR_RESET ": %s:%d - Expected \"%s\", got \"%s\"\n", \
40+
__FILE__, __LINE__, (expected), (actual)); \
41+
} \
42+
} while(0)
43+
44+
// Assert true
45+
#define MASSERT_TRUE(condition) do { \
46+
m_total_tests++; \
47+
if (condition) { \
48+
m_passed_tests++; \
49+
MLogf(MANSI_COLOR_GREEN "PASS" MANSI_COLOR_RESET ": %s:%d - Condition is true\n", \
50+
__FILE__, __LINE__); \
51+
} else { \
52+
MLogf(MANSI_COLOR_RED "FAIL" MANSI_COLOR_RESET ": %s:%d - Expected true, got false\n", \
53+
__FILE__, __LINE__); \
54+
} \
55+
} while(0)
56+
57+
// Assert false
58+
#define MASSERT_FALSE(condition) do { \
59+
m_total_tests++; \
60+
if (!(condition)) { \
61+
m_passed_tests++; \
62+
MLogf(MANSI_COLOR_GREEN "PASS" MANSI_COLOR_RESET ": %s:%d - Condition is false\n", \
63+
__FILE__, __LINE__); \
64+
} else { \
65+
MLogf(MANSI_COLOR_RED "FAIL" MANSI_COLOR_RESET ": %s:%d - Expected false, got true\n", \
66+
__FILE__, __LINE__); \
67+
} \
68+
} while(0)
69+
70+
// Assert floating point equality within epsilon
71+
#define MASSERT_FLOAT(expected, actual, epsilon) do { \
72+
m_total_tests++; \
73+
float diff = (expected) - (actual); \
74+
if (diff < 0) diff = -diff; \
75+
if (diff <= epsilon) { \
76+
m_passed_tests++; \
77+
MLogf(MANSI_COLOR_GREEN "PASS" MANSI_COLOR_RESET ": %s:%d - Expected %f, got %f (within %f)\n", \
78+
__FILE__, __LINE__, (float)(expected), (float)(actual), (float)(epsilon)); \
79+
} else { \
80+
MLogf(MANSI_COLOR_RED "FAIL" MANSI_COLOR_RESET ": %s:%d - Expected %f, got %f (epsilon %f)\n", \
81+
__FILE__, __LINE__, (float)(expected), (float)(actual), (float)(epsilon)); \
82+
} \
83+
} while(0)
84+
85+
#define MTEST_FUNC(x) { MLogf(">>> %s", #x); (x); }

0 commit comments

Comments
 (0)