vulkan游戏引擎test_manager实现

1.test_manager.h

#pragma once

#include <defines.h>

#define BYPASS 2

typedef u8 (*PFN_test)();

void test_manager_init();

void test_manager_register_test(PFN_test, char* desc);

void test_manager_run_tests();

2.test_manager.c

#include "test_manager.h"

#include <containers/darray.h>

#include <core/logger.h>

#include <core/kstring.h>

#include <core/clock.h>

typedef struct test_entry{

PFN_test func;

char* desc;

}test_entry;

static test_entry* tests;

void test_manager_init()

{

tests = darray_create(test_entry);

}

void test_manager_register_test(u8 (*PFN_test)(), char* desc)

{

test_entry e;

e.func = PFN_test;

e.desc = desc;

darray_push(tests,e);

}

void test_manager_run_tests()

{

u32 passed = 0;

u32 failed = 0;

u32 skipped = 0;

u32 count = darray_length(tests);

clock total_time;

clock_start(&total_time);

for(u32 i = 0; i<count;++i)

{

clock test_time;

clock_start(&test_time);

u8 result = tests[i].func();

clock_update(&test_time);

if(result == true)

{

++passed;

}else if(result == BYPASS)

{

KWARN("[SKIPPED]: %s",tests[i].desc);

++skipped;

}else

{

KERROR("[FAILED]: %s",tests[i].desc);

++failed;

}

char status[20];

string_format(status, failed ? "*** %d FAILED ***" : "SUCCESS",failed);

clock_update(&total_time);

KINFO("Executed %d of %d (skipping %d) %s (%.6f sec / %.6f sec total", i + 1,count, skipped,status,test_time.elapsed,total_time.elapsed);

}

clock_stop(&total_time);

KINFO("Result: %d passed,%d failed,%d skipped.",passed,failed,skipped);

}

相关推荐
梵刹古音9 小时前
【C语言】 字符数组相关库函数
c语言·开发语言·算法
wfeqhfxz258878216 小时前
YOLO13-C3k2-GhostDynamicConv烟雾检测算法实现与优化
人工智能·算法·计算机视觉
毕设源码-朱学姐16 小时前
【开题答辩全过程】以 基于JavaWeb的网上家具商城设计与实现为例,包含答辩的问题和答案
java
Aaron158816 小时前
基于RFSOC的数字射频存储技术应用分析
c语言·人工智能·驱动开发·算法·fpga开发·硬件工程·信号处理
C雨后彩虹17 小时前
CAS与其他并发方案的对比及面试常见问题
java·面试·cas·同步·异步·
_不会dp不改名_18 小时前
leetcode_3010 将数组分成最小总代价的子数组 I
算法·leetcode·职场和发展
java1234_小锋18 小时前
Java高频面试题:SpringBoot为什么要禁止循环依赖?
java·开发语言·面试
2501_9445255419 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 账户详情页面
android·java·开发语言·前端·javascript·flutter
计算机学姐19 小时前
基于SpringBoot的电影点评交流平台【协同过滤推荐算法+数据可视化统计】
java·vue.js·spring boot·spring·信息可视化·echarts·推荐算法