Path: blob/main/contrib/libcbor/test/test_allocator.h
39562 views
#ifndef TEST_ALLOCATOR_H_1#define TEST_ALLOCATOR_H_23#include "assertions.h"4#include "cbor.h"56// Harness for mocking `malloc` and `realloc`78typedef enum call_expectation {9MALLOC,10MALLOC_FAIL,11REALLOC,12REALLOC_FAIL13} call_expectation;1415void set_mock_malloc(int calls, ...);1617void finalize_mock_malloc(void);1819void *instrumented_malloc(size_t size);2021void *instrumented_realloc(void *ptr, size_t size);2223#define WITH_MOCK_MALLOC(block, malloc_calls, ...) \24do { \25cbor_set_allocs(instrumented_malloc, instrumented_realloc, free); \26set_mock_malloc(malloc_calls, __VA_ARGS__); \27block; \28finalize_mock_malloc(); \29cbor_set_allocs(malloc, realloc, free); \30} while (0)3132#define WITH_FAILING_MALLOC(block) WITH_MOCK_MALLOC(block, 1, MALLOC_FAIL)3334#endif // TEST_ALLOCATOR_H_353637