annotate tests/test-alloc.c @ 336:f5a5bbb77122

tests: switch to rexo
author David Demelier <markand@malikania.fr>
date Wed, 13 Oct 2021 20:56:07 +0200
parents d01e83210ca2
children 460c78706989
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 *
314
d01e83210ca2 misc: update years
David Demelier <markand@malikania.fr>
parents: 298
diff changeset
4 * Copyright (c) 2020-2021 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
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
19 #include <rexo.h>
228
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <core/alloc.h>
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
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
28 RX_TEST_CASE(test, array_simple)
269
9b758eb84556 core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents: 228
diff changeset
29 {
9b758eb84556 core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents: 228
diff changeset
30 struct point *points;
9b758eb84556 core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents: 228
diff changeset
31
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
32 RX_REQUIRE((points = alloc_array0(2, sizeof (*points))));
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
33 RX_INT_REQUIRE_EQUAL(points[0].x, 0);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
34 RX_INT_REQUIRE_EQUAL(points[0].y, 0);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
35 RX_INT_REQUIRE_EQUAL(points[1].x, 0);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
36 RX_INT_REQUIRE_EQUAL(points[1].y, 0);
269
9b758eb84556 core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents: 228
diff changeset
37
9b758eb84556 core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents: 228
diff changeset
38 points[0].x = 10;
9b758eb84556 core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents: 228
diff changeset
39 points[0].y = 20;
9b758eb84556 core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents: 228
diff changeset
40 points[1].x = 30;
9b758eb84556 core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents: 228
diff changeset
41 points[1].y = 40;
9b758eb84556 core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents: 228
diff changeset
42
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
43 RX_REQUIRE((points = alloc_rearray0(points, 2, 4, sizeof (*points))));
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
44 RX_INT_REQUIRE_EQUAL(points[0].x, 10);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
45 RX_INT_REQUIRE_EQUAL(points[0].y, 20);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
46 RX_INT_REQUIRE_EQUAL(points[1].x, 30);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
47 RX_INT_REQUIRE_EQUAL(points[1].y, 40);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
48 RX_INT_REQUIRE_EQUAL(points[2].x, 0);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
49 RX_INT_REQUIRE_EQUAL(points[2].y, 0);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
50 RX_INT_REQUIRE_EQUAL(points[3].x, 0);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
51 RX_INT_REQUIRE_EQUAL(points[3].y, 0);
269
9b758eb84556 core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents: 228
diff changeset
52 }
9b758eb84556 core: add alloc_rearray0 function
David Demelier <markand@malikania.fr>
parents: 228
diff changeset
53
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
54 RX_TEST_CASE(test, pool_simple)
228
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 {
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 struct alloc_pool pool;
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 struct point *p;
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
59 RX_REQUIRE(alloc_pool_init(&pool, sizeof (*p), NULL) == 0);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
60 RX_UINT_REQUIRE_EQUAL(pool.elemsize, sizeof (*p));
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
61 RX_UINT_REQUIRE_EQUAL(pool.size, 0);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
62 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
63
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 /* Create until we reach the capacity. */
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 for (size_t i = 0; i < pool.capacity; ++i) {
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 p = alloc_pool_new(&pool);
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 p->x = (int)i + 1;
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 p->y = (int)i + 1;
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 }
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
71 RX_UINT_REQUIRE_EQUAL(pool.size, pool.capacity);
228
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 /* Verify values are correct. */
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 for (size_t i = 0; i < pool.size; ++i) {
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 p = ((struct point *)pool.data) + i;
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
76
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
77 RX_INT_REQUIRE_EQUAL(p->x, (int)i + 1);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
78 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
79 }
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
80
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 /* Now it should reallocate. */
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 p = alloc_pool_new(&pool);
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 p->x = 9999;
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 p->y = 9999;
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
85
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
86 RX_REQUIRE(pool.capacity > pool.size);
228
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
87
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 alloc_pool_finish(&pool);
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
90 RX_PTR_REQUIRE_EQUAL(pool.data, NULL);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
91 RX_UINT_REQUIRE_EQUAL(pool.elemsize, 0U);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
92 RX_UINT_REQUIRE_EQUAL(pool.size, 0U);
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
93 RX_UINT_REQUIRE_EQUAL(pool.capacity, 0U);
228
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 }
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 int
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 main(int argc, char **argv)
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 {
336
f5a5bbb77122 tests: switch to rexo
David Demelier <markand@malikania.fr>
parents: 314
diff changeset
99 return rx_main(0, NULL, argc, (const char **)argv) == RX_SUCCESS ? 0 : 1;
228
2734223d3daf core: add a alloc_pool module
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 }