Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/libcbor/test/test_allocator.h
39562 views
1
#ifndef TEST_ALLOCATOR_H_
2
#define TEST_ALLOCATOR_H_
3
4
#include "assertions.h"
5
#include "cbor.h"
6
7
// Harness for mocking `malloc` and `realloc`
8
9
typedef enum call_expectation {
10
MALLOC,
11
MALLOC_FAIL,
12
REALLOC,
13
REALLOC_FAIL
14
} call_expectation;
15
16
void set_mock_malloc(int calls, ...);
17
18
void finalize_mock_malloc(void);
19
20
void *instrumented_malloc(size_t size);
21
22
void *instrumented_realloc(void *ptr, size_t size);
23
24
#define WITH_MOCK_MALLOC(block, malloc_calls, ...) \
25
do { \
26
cbor_set_allocs(instrumented_malloc, instrumented_realloc, free); \
27
set_mock_malloc(malloc_calls, __VA_ARGS__); \
28
block; \
29
finalize_mock_malloc(); \
30
cbor_set_allocs(malloc, realloc, free); \
31
} while (0)
32
33
#define WITH_FAILING_MALLOC(block) WITH_MOCK_MALLOC(block, 1, MALLOC_FAIL)
34
35
#endif // TEST_ALLOCATOR_H_
36
37