Newer
Older
libkc / modules / test / src / ut.h
Nomura Kei on 29 May 1 KB update
#ifndef UT_H
#define UT_H

#include <kc.h>
#include <kc_memory_entry.h>

extern void suite_assert(void);
extern void suite_dl(void);
extern void suite_env(void);
extern void suite_list_array(void);
extern void suite_list_linked(void);
extern void suite_lock_guard(void);
extern void suite_map(void);
extern void suite_memory_dump(void);
extern void suite_memory_entry(void);
extern void suite_memory_listener(void);
extern void suite_memory_mark(void);
extern void suite_memory(void);
extern void suite_queue(void);
extern void suite_socket(void);
extern void suite_thread(void);

////////////////////////////////////////////////////////////////////////////////
//
// 以下、メモリ管理操作用
//

extern bool (*_UT_KcMemory_can_alloc)(
    KcMemoryEntry *entry, size_t alignment, size_t size,
    KcMemoryMark mark, const char *file, const char *func, int line);

typedef bool (*UT_KcMemory_can_alloc_func)(
    KcMemoryEntry *entry, size_t alignment, size_t size,
    KcMemoryMark mark, const char *file, const char *func, int line);

UT_KcMemory_can_alloc_func _ut_can_alloc_func(int counter);

/**
 * ut_alloc_control(0)
 * {
 *   // メモリ確保失敗させたい処理
 * }
 *
 * ut_alloc_control(1)
 * {
 *   // 2回目にメモリ確保失敗させたい処理
 * }
 */
#define ut_alloc_control(counter) \
    for (_UT_KcMemory_can_alloc = _ut_can_alloc_func(counter); _UT_KcMemory_can_alloc != NULL; _UT_KcMemory_can_alloc = NULL)

#endif // UT_H