9
9
#include <unistd.h>
10
10
#endif
11
11
12
+ #ifdef _WIN32
13
+ #define TEST_SLEEP (ms ) Sleep(ms)
14
+ #else
15
+ #define TEST_SLEEP (ms ) usleep(ms * 1000);
16
+ #endif
17
+
18
+
19
+ #define ENET_EXPAND (x ) x
20
+ #define GET_MACRO (_1 , _2 , _3 , NAME , ...) NAME
21
+
22
+ #define OP_EQ (a , b ) ((a) == (b))
23
+ #define OP_NE (a , b ) ((a) != (b))
24
+ #define OP_CALL (op , a , b ) (op(a, b))
25
+
26
+ #define ASSERT_EQ (...) ENET_EXPAND( GET_MACRO(__VA_ARGS__, ASSERT_THAT_IMPL3, ASSERT_THAT_IMPL2)(ASSERT_EQ, OP_EQ, __VA_ARGS__) )
27
+ #define ASSERT_NE (...) ENET_EXPAND( GET_MACRO(__VA_ARGS__, ASSERT_THAT_IMPL3, ASSERT_THAT_IMPL2)(ASSERT_NE, OP_NE, __VA_ARGS__) )
28
+
29
+ #define ASSERT_THAT_IMPL2 (cmd , op , a , b ) \
30
+ do { \
31
+ if (!OP_CALL(op, a, b)) { \
32
+ entry->failed += 1; \
33
+ fprintf(stderr, "%s(%s, %s)\n", #cmd, #a, #b); \
34
+ fprintf(stderr, " Expected: %s\n", #b); \
35
+ fprintf(stderr, " But was: %s\n", #a); \
36
+ fprintf(stderr, "at %s:%d\n", __FILE__, __LINE__); \
37
+ return; \
38
+ } \
39
+ } while (0)
40
+
41
+
42
+ #define ASSERT_THAT_IMPL3 (cmd , op , a , b , m ) \
43
+ do { \
44
+ if (!OP_CALL(op, a, b)) { \
45
+ entry->failed += 1; \
46
+ fprintf(stderr, "%s\n", m); \
47
+ fprintf(stderr, "%s(%s, %s)\n", #cmd, #a, #b); \
48
+ fprintf(stderr, " Expected: %s\n", #b); \
49
+ fprintf(stderr, " But was: %s\n", #a); \
50
+ fprintf(stderr, "at %s:%d\n", __FILE__, __LINE__); \
51
+ return; \
52
+ } \
53
+ } while (0)
54
+
12
55
typedef struct _ENetTestEntry ENetTestEntry ;
13
56
14
57
typedef void (* ENetUnitTestFunc )(ENetTestEntry * entry );
@@ -21,18 +64,14 @@ typedef struct _ENetTestEntry {
21
64
22
65
#define MAX_TESTS 8096
23
66
24
- static ENetTestEntry enet_test_entries [MAX_TESTS ];
25
- static int enet_test_count = 0 ;
26
-
27
- #ifdef _WIN32
28
- #define ASSERT_SLEEP (ms ) Sleep(ms)
67
+ #ifdef ENET_UNIT_IMPLEMENTATION
68
+ ENetTestEntry enet_test_entries [MAX_TESTS ];
69
+ int enet_test_count = 0 ;
29
70
#else
30
- #define ASSERT_SLEEP (ms ) usleep(ms * 1000);
71
+ extern ENetTestEntry enet_test_entries [MAX_TESTS ];
72
+ extern int enet_test_count ;
31
73
#endif
32
74
33
- #define ENET_EXPAND (x ) x
34
- #define GET_MACRO (_1 , _2 , _3 , NAME , ...) NAME
35
- #define ASSERT_THAT (...) ENET_EXPAND( GET_MACRO(__VA_ARGS__, ASSERT_THAT_IMPL3, ASSERT_THAT_IMPL2)(__VA_ARGS__) )
36
75
37
76
#define ENET_TEST_REGISTER (f ) \
38
77
do { \
@@ -65,33 +104,10 @@ static void __cdecl func(void)
65
104
} \
66
105
static void enet_test_##func(ENetTestEntry * entry)
67
106
68
- #define ASSERT_THAT_IMPL3 (a , b , m ) do { \
69
- if ((a) != (b)) { \
70
- entry->failed += 1; \
71
- fprintf(stderr, "%s\n", m); \
72
- fprintf(stderr, "ASSERT_THAT(%s, %s)\n", #a, #b); \
73
- fprintf(stderr, " Expected: %s\n", #b); \
74
- fprintf(stderr, " But was: %s\n", #a); \
75
- fprintf(stderr, "at %s:%d\n", __FILE__, __LINE__); \
76
- return; \
77
- } \
78
- } while (0)
79
-
80
- #define ASSERT_THAT_IMPL2 (a , b ) do { \
81
- if ((a) != (b)) { \
82
- entry->failed += 1; \
83
- fprintf(stderr, "ASSERT_THAT(%s, %s)\n", #a, #b); \
84
- fprintf(stderr, " Expected: %s\n", #b); \
85
- fprintf(stderr, " But was: %s\n", #a); \
86
- fprintf(stderr, "at %s:%d\n", __FILE__, __LINE__); \
87
- return; \
88
- } \
89
- } while (0)
90
-
91
107
static int run_all_tests (void ) {
92
108
int failed = 0 ;
93
109
for (int i = 0 ; i < enet_test_count ; ++ i ) {
94
- const char * prefix = "enet_test_" ;
110
+ const char * prefix = "enet_test_" ;
95
111
ENetTestEntry * entry = & enet_test_entries [i ];
96
112
97
113
const char * funcName = entry -> name + strlen (prefix );
0 commit comments