Skip to content

Commit 45700a6

Browse files
committed
add test_packets, test_lists
1 parent 8647b6e commit 45700a6

File tree

7 files changed

+496
-88
lines changed

7 files changed

+496
-88
lines changed

CMakeLists.txt

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,20 +83,46 @@ if(ENET_TEST)
8383
# Default test
8484
add_executable(enet_test test/build.c)
8585
target_link_libraries(enet_test PRIVATE enet_test_interface)
86-
86+
8787
# Test with more peers
8888
add_executable(enet_test_extra_peers test/build.c)
8989
target_link_libraries(enet_test_extra_peers PRIVATE enet_test_interface)
9090
target_compile_definitions(enet_test_extra_peers PRIVATE ENET_USE_MORE_PEERS)
9191

92-
# Test unit
93-
add_executable(enet_test_unit test/units/test_main.c)
94-
target_link_libraries(enet_test_unit PRIVATE enet_test_interface)
95-
target_include_directories(enet_test_unit INTERFACE
92+
# enet test units
93+
file(GLOB UNIT_TEST_SOURCES "test/units/*.c")
94+
add_library(enet_test_units STATIC ${UNIT_TEST_SOURCES})
95+
target_include_directories(enet_test_units PRIVATE
9696
${CMAKE_CURRENT_SOURCE_DIR}/include
9797
${CMAKE_CURRENT_SOURCE_DIR}/test/units/include
9898
)
99-
endif()
99+
100+
# enet test units run
101+
add_executable(enet_test_unit_run test/unit_tests.c)
102+
target_link_libraries(enet_test_unit_run PRIVATE
103+
enet_test_interface
104+
enet_test_units
105+
)
106+
107+
if (MSVC)
108+
target_link_options(enet_test_unit_run PRIVATE
109+
"/WHOLEARCHIVE:enet_test_units"
110+
)
111+
elseif (APPLE)
112+
target_link_libraries(enet_test_unit_run PRIVATE
113+
"-Wl,-force_load,${CMAKE_BINARY_DIR}/libenet_test_units.a"
114+
)
115+
else()
116+
target_link_libraries(enet_test_unit_run PRIVATE
117+
"-Wl,--whole-archive" enet_test_units "-Wl,--no-whole-archive"
118+
)
119+
endif()
120+
121+
target_include_directories(enet_test_unit_run PRIVATE
122+
${CMAKE_CURRENT_SOURCE_DIR}/include
123+
${CMAKE_CURRENT_SOURCE_DIR}/test/units/include
124+
)
125+
endif ()
100126

101127
# -----------------------------
102128
# 5) Installation

test/resize.c

Lines changed: 0 additions & 16 deletions
This file was deleted.

test/units/test_main.c renamed to test/unit_tests.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
#include <stdio.h>
22

3+
#define ENET_UNIT_IMPLEMENTATION
4+
#define ENET_IMPLEMENTATION
5+
36
#include "enet.h"
4-
#include "enet_unit.h"
5-
#include "test_times.c"
7+
#include "units/enet_unit.h"
68

79
int main() {
810
if (enet_initialize() != 0) {

test/units/enet_unit.h

Lines changed: 49 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,49 @@
99
#include <unistd.h>
1010
#endif
1111

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+
1255
typedef struct _ENetTestEntry ENetTestEntry;
1356

1457
typedef void (*ENetUnitTestFunc)(ENetTestEntry *entry);
@@ -21,18 +64,14 @@ typedef struct _ENetTestEntry {
2164

2265
#define MAX_TESTS 8096
2366

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;
2970
#else
30-
#define ASSERT_SLEEP(ms) usleep(ms * 1000);
71+
extern ENetTestEntry enet_test_entries[MAX_TESTS];
72+
extern int enet_test_count;
3173
#endif
3274

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__) )
3675

3776
#define ENET_TEST_REGISTER(f) \
3877
do { \
@@ -65,33 +104,10 @@ static void __cdecl func(void)
65104
} \
66105
static void enet_test_##func(ENetTestEntry * entry)
67106

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-
91107
static int run_all_tests(void) {
92108
int failed = 0;
93109
for (int i = 0; i < enet_test_count; ++i) {
94-
const char* prefix = "enet_test_";
110+
const char *prefix = "enet_test_";
95111
ENetTestEntry *entry = &enet_test_entries[i];
96112

97113
const char *funcName = entry->name + strlen(prefix);

0 commit comments

Comments
 (0)