Mercurial > molko
annotate tests/test-alloc.c @ 408:0ea90751a62d
tests: disable entirely automatic registration
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 08 Apr 2022 15:59:08 +0200 |
parents | 7321511052f6 |
children | 1bf7d6669f0a |
rev | line source |
---|---|
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * test-alloc.c -- test allocators |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
378
460c78706989
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
336
diff
changeset
|
4 * Copyright (c) 2020-2022 David Demelier <markand@malikania.fr> |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
408
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
19 #include <core/alloc.h> |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 |
408
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
21 #include "test.h" |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 struct point { |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 int x; |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 int y; |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 }; |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 |
404
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
28 static const struct alloc_funcs standard_funcs = { |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
29 .alloc = malloc, |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
30 .realloc = realloc, |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
31 .free = free |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
32 }; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
33 |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
34 static struct { |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
35 size_t total; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
36 size_t alloc_count; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
37 size_t free_count; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
38 } my_stats; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
39 |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
40 static void * |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
41 my_alloc(size_t n) |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
42 { |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
43 my_stats.alloc_count += 1; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
44 my_stats.total += n; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
45 |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
46 return malloc(n); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
47 } |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
48 |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
49 static void * |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
50 my_realloc(void *ptr, size_t n) |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
51 { |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
52 (void)ptr; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
53 (void)n; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
54 |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
55 return NULL; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
56 } |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
57 |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
58 static void |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
59 my_free(void *ptr) |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
60 { |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
61 free(ptr); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
62 my_stats.free_count += 1; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
63 } |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
64 |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
65 static const struct alloc_funcs my_funcs = { |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
66 .alloc = my_alloc, |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
67 .realloc = my_realloc, |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
68 .free = my_free |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
69 }; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
70 |
408
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
71 RX_SET_UP(basics_set_up) |
404
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
72 { |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
73 alloc_set(&standard_funcs); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
74 |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
75 return RX_SUCCESS; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
76 } |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
77 |
408
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
78 RX_TEAR_DOWN(basics_tear_down) |
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
79 { |
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
80 } |
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
81 |
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
82 RX_SET_UP(custom_set_up) |
404
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
83 { |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
84 alloc_set(&my_funcs); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
85 |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
86 return RX_SUCCESS; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
87 } |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
88 |
408
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
89 RX_TEAR_DOWN(custom_tear_down) |
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
90 { |
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
91 } |
404
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
92 |
408
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
93 RX_TEST_CASE(basics, array_simple) |
269
9b758eb84556
core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
94 { |
9b758eb84556
core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
95 struct point *points; |
9b758eb84556
core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
96 |
336
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
97 RX_REQUIRE((points = alloc_array0(2, sizeof (*points)))); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
98 RX_INT_REQUIRE_EQUAL(points[0].x, 0); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
99 RX_INT_REQUIRE_EQUAL(points[0].y, 0); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
100 RX_INT_REQUIRE_EQUAL(points[1].x, 0); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
101 RX_INT_REQUIRE_EQUAL(points[1].y, 0); |
269
9b758eb84556
core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
102 |
9b758eb84556
core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
103 points[0].x = 10; |
9b758eb84556
core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
104 points[0].y = 20; |
9b758eb84556
core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
105 points[1].x = 30; |
9b758eb84556
core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
106 points[1].y = 40; |
9b758eb84556
core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
107 |
336
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
108 RX_REQUIRE((points = alloc_rearray0(points, 2, 4, sizeof (*points)))); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
109 RX_INT_REQUIRE_EQUAL(points[0].x, 10); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
110 RX_INT_REQUIRE_EQUAL(points[0].y, 20); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
111 RX_INT_REQUIRE_EQUAL(points[1].x, 30); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
112 RX_INT_REQUIRE_EQUAL(points[1].y, 40); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
113 RX_INT_REQUIRE_EQUAL(points[2].x, 0); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
114 RX_INT_REQUIRE_EQUAL(points[2].y, 0); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
115 RX_INT_REQUIRE_EQUAL(points[3].x, 0); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
116 RX_INT_REQUIRE_EQUAL(points[3].y, 0); |
269
9b758eb84556
core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
117 } |
9b758eb84556
core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents:
228
diff
changeset
|
118 |
408
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
119 RX_TEST_CASE(basics, pool_simple) |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 { |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 struct alloc_pool pool; |
404
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
122 struct point *p, *data; |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
123 size_t total = 0; |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 |
404
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
125 alloc_pool_init(&pool, sizeof (*p), NULL); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
126 |
336
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
127 RX_UINT_REQUIRE_EQUAL(pool.elemsize, sizeof (*p)); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
128 RX_UINT_REQUIRE_EQUAL(pool.size, 0); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
129 RX_UINT_REQUIRE_EQUAL(pool.capacity, ALLOC_POOL_INIT_DEFAULT); |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 /* Create until we reach the capacity. */ |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 for (size_t i = 0; i < pool.capacity; ++i) { |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 p = alloc_pool_new(&pool); |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 p->x = (int)i + 1; |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
135 p->y = (int)i + 1; |
404
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
136 total++; |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 } |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
138 |
336
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
139 RX_UINT_REQUIRE_EQUAL(pool.size, pool.capacity); |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 /* Verify values are correct. */ |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 for (size_t i = 0; i < pool.size; ++i) { |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
143 p = ((struct point *)pool.data) + i; |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
144 |
336
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
145 RX_INT_REQUIRE_EQUAL(p->x, (int)i + 1); |
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
146 RX_INT_REQUIRE_EQUAL(p->y, (int)i + 1); |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
147 } |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
148 |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 /* Now it should reallocate. */ |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
150 p = alloc_pool_new(&pool); |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 p->x = 9999; |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
152 p->y = 9999; |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 |
336
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
154 RX_REQUIRE(pool.capacity > pool.size); |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 |
404
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
156 /* Shrink it! */ |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
157 data = alloc_pool_shrink(&pool); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
158 |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
159 /* Verify values are correct again. */ |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
160 for (size_t i = 0; i < total; ++i) { |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
161 RX_INT_REQUIRE_EQUAL(data[i].x, (int)i + 1); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
162 RX_INT_REQUIRE_EQUAL(data[i].y, (int)i + 1); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
163 } |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 |
336
f5a5bbb77122
tests: switch to rexo
David Demelier <markand@malikania.fr>
parents:
314
diff
changeset
|
165 RX_PTR_REQUIRE_EQUAL(pool.data, NULL); |
404
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
166 RX_UINT_REQUIRE_EQUAL(pool.size, 0); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
167 RX_UINT_REQUIRE_EQUAL(pool.capacity, 0); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
168 RX_UINT_REQUIRE_EQUAL(pool.elemsize, 0); |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 } |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
170 |
408
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
171 RX_TEST_CASE(basics, sdupf) |
402
d3fa956cdaf0
core: add alloc_sdupf
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
172 { |
d3fa956cdaf0
core: add alloc_sdupf
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
173 char *str = alloc_sdupf("Hello %s", "David"); |
d3fa956cdaf0
core: add alloc_sdupf
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
174 |
d3fa956cdaf0
core: add alloc_sdupf
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
175 RX_STR_REQUIRE_EQUAL(str, "Hello David"); |
d3fa956cdaf0
core: add alloc_sdupf
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
176 free(str); |
d3fa956cdaf0
core: add alloc_sdupf
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
177 } |
d3fa956cdaf0
core: add alloc_sdupf
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
178 |
408
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
179 RX_TEST_CASE(custom, count) |
404
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
180 { |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
181 alloc_free(alloc_new(10)); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
182 alloc_free(alloc_new0(20)); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
183 alloc_free(alloc_sdup("malikania")); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
184 |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
185 RX_INT_REQUIRE_EQUAL(my_stats.total, 40U); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
186 RX_INT_REQUIRE_EQUAL(my_stats.alloc_count, 3U); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
187 RX_INT_REQUIRE_EQUAL(my_stats.free_count, 3U); |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
188 } |
7321511052f6
core: rework alloc module
David Demelier <markand@malikania.fr>
parents:
402
diff
changeset
|
189 |
408
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
190 static const struct rx_test_case tests[] = { |
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
191 TEST_FIXTURE(basics, array_simple, void *), |
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
192 TEST_FIXTURE(basics, pool_simple, void *), |
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
193 TEST_FIXTURE(basics, sdupf, void *), |
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
194 TEST_FIXTURE(custom, count, void *) |
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
195 }; |
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
196 |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
197 int |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
198 main(int argc, char **argv) |
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
199 { |
408
0ea90751a62d
tests: disable entirely automatic registration
David Demelier <markand@malikania.fr>
parents:
404
diff
changeset
|
200 return TEST_RUN_ALL(tests, argc, argv); |
228
2734223d3daf
core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
201 } |