diff options
Diffstat (limited to 'test/mock/memory_mock.hpp')
-rw-r--r-- | test/mock/memory_mock.hpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/test/mock/memory_mock.hpp b/test/mock/memory_mock.hpp new file mode 100644 index 0000000..e140840 --- /dev/null +++ b/test/mock/memory_mock.hpp @@ -0,0 +1,53 @@ +#include <gmock/gmock.h> +#include <functional> + +#include <stdlib.h> + +/* +void *malloc(size_t size); +void free(void *ptr); +*/ +static std::function<void*(size_t size)> _malloc; +static std::function<void(void *ptr)> _free; + +class MemoryMocker { +public: + MemoryMocker() { + _malloc = [this](size_t size) { + return malloc(size); + }; + _free = [this](void *ptr) { + return free(ptr); + }; + } + + ~MemoryMocker() { + _malloc = {}; + _free = {}; + } + + MOCK_CONST_METHOD1(malloc, void*(size_t)); + MOCK_CONST_METHOD1(free, void(void *)); +}; + +class MemoryMockBase { +protected: + MemoryMocker memorym; +}; + +#ifdef __cplusplus +extern "C" { +#endif +static void* unittest_malloc(size_t size) +{ + return _malloc(size); +} +/* +static void free(void *ptr) +{ + _free(ptr); +} +*/ +#ifdef __cplusplus +} +#endif |