GCC Code Coverage Report


Directory: src/gate/
File: src/gate/tests/gatecore_test/test_memalloc.c
Date: 2025-09-14 13:10:38
Exec Total Coverage
Lines: 53 53 100.0%
Functions: 1 1 100.0%
Branches: 32 62 51.6%

Line Branch Exec Source
1 #include "test_memalloc.h"
2
3 #include "gate/tests.h"
4 #include "gate/memalloc.h"
5
6
7 #define MEMALLOC_TEST_CHAR 0x55
8 #define MEMALLOC_TEST_BUFFER_LENGTH 16
9
10 1 GATE_TEST_FUNCTION(test_memalloc)
11 {
12 char* ptr;
13 int index;
14 gate_size_t sz;
15 1 char const filled_buf[MEMALLOC_TEST_BUFFER_LENGTH] =
16 {
17 MEMALLOC_TEST_CHAR, MEMALLOC_TEST_CHAR, MEMALLOC_TEST_CHAR, MEMALLOC_TEST_CHAR,
18 MEMALLOC_TEST_CHAR, MEMALLOC_TEST_CHAR, MEMALLOC_TEST_CHAR, MEMALLOC_TEST_CHAR,
19 MEMALLOC_TEST_CHAR, MEMALLOC_TEST_CHAR, MEMALLOC_TEST_CHAR, MEMALLOC_TEST_CHAR,
20 MEMALLOC_TEST_CHAR, MEMALLOC_TEST_CHAR, MEMALLOC_TEST_CHAR, MEMALLOC_TEST_CHAR
21 };
22 1 char const empty_buf[MEMALLOC_TEST_BUFFER_LENGTH] = { 0 };
23 1 char temp_buf[MEMALLOC_TEST_BUFFER_LENGTH] = { 0 };
24
25 1 gate_size_t const buf_size = sizeof(filled_buf);
26
27
28 1 GATE_TEST_UNIT_BEGIN(test_memalloc);
29
30
2/2
✓ Branch 0 taken 7 times.
✓ Branch 1 taken 1 times.
8 for (index = 1; index != 8; ++index)
31 {
32 7 sz = (gate_size_t)index * 512u;
33
1/2
✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
7 GATE_TEST_REQUIRE_NOT_EQUAL(ptr = (char*)gate_mem_alloc(sz), NULL);
34 7 gate_mem_fill(ptr, MEMALLOC_TEST_CHAR, sz);
35
1/2
✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
7 GATE_TEST_CHECK_EQUAL(gate_mem_compare(ptr, ptr, sz), 0);
36
1/2
✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
7 GATE_TEST_CHECK_EQUAL(gate_mem_compare(ptr, filled_buf, buf_size), 0);
37
1/2
✓ Branch 3 taken 7 times.
✗ Branch 4 not taken.
7 GATE_TEST_CHECK_EQUAL(gate_mem_compare(&ptr[sz - buf_size], filled_buf, buf_size), 0);
38 7 gate_mem_dealloc(ptr);
39 }
40
41 {
42
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_REQUIRE_NOT_EQUAL(ptr = (char*)gate_mem_alloc(buf_size), NULL);
43 1 gate_mem_fill(ptr, MEMALLOC_TEST_CHAR, buf_size);
44
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_REQUIRE_NOT_EQUAL(ptr = (char*)gate_mem_realloc(ptr, buf_size * 2), NULL);
45
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(ptr, filled_buf, buf_size), 0);
46
47 1 gate_mem_clear(ptr, buf_size * 2);
48
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(&ptr[0], empty_buf, buf_size), 0);
49
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(&ptr[buf_size], empty_buf, buf_size), 0);
50
51 1 gate_mem_clear(ptr, buf_size * 2);
52
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_copy(ptr, filled_buf, buf_size), ptr);
53
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(ptr, filled_buf, buf_size), 0);
54
55 1 gate_mem_clear(ptr, buf_size * 2);
56
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_move(ptr, filled_buf, buf_size), ptr);
57
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(ptr, filled_buf, buf_size), 0);
58
59
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK(gate_mem_compare(ptr, empty_buf, buf_size) > 0);
60
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK(gate_mem_compare(empty_buf, ptr, buf_size) < 0);
61 1 gate_mem_dealloc(ptr);
62 }
63
64 {
65
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_REQUIRE_NOT_EQUAL(ptr = (char*)gate_mem_alloc(buf_size), NULL);
66
67 1 gate_mem_fill(ptr, MEMALLOC_TEST_CHAR, buf_size);
68 1 gate_mem_clear(temp_buf, buf_size);
69
70 /* heap-block filled, temp_buf empty */
71
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(ptr, filled_buf, buf_size), 0);
72
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(&temp_buf[0], empty_buf, buf_size), 0);
73
74
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_swap(ptr, &temp_buf[0], buf_size, NULL, NULL), true);
75 /* heap-block empty, temp_buf filled */
76
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(ptr, empty_buf, buf_size), 0);
77
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(&temp_buf[0], filled_buf, buf_size), 0);
78
79
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_swap(ptr, &temp_buf[0], buf_size, NULL, NULL), true);
80 /* heap-block filled, temp_buf empty */
81
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(ptr, filled_buf, buf_size), 0);
82
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(&temp_buf[0], empty_buf, buf_size), 0);
83
84 1 gate_mem_dealloc(ptr);
85 }
86
87 {
88
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_REQUIRE_NOT_EQUAL(ptr = (char*)gate_mem_alloc(buf_size * 2), NULL);
89 1 gate_mem_clear(&ptr[0], buf_size);
90 1 gate_mem_fill(&ptr[buf_size], MEMALLOC_TEST_CHAR, buf_size);
91
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(&ptr[0], empty_buf, buf_size), 0);
92
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(&ptr[buf_size], filled_buf, buf_size), 0);
93
94 /*00000000-FFFFFFFF -> 00000000-0000FFFF */
95 1 gate_mem_move(&ptr[buf_size], &ptr[buf_size / 2], buf_size);
96
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(&ptr[0], empty_buf, buf_size), 0);
97
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(&ptr[buf_size], empty_buf, buf_size / 2), 0);
98
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATE_TEST_CHECK_EQUAL(gate_mem_compare(&ptr[buf_size + buf_size / 2], filled_buf, buf_size / 2), 0);
99
100 1 gate_mem_dealloc(ptr);
101 }
102
103
104 1 GATE_TEST_UNIT_END;
105 }
106