vulkan游戏引擎test_manager实现

发布于:2025-06-08 ⋅ 阅读:(18) ⋅ 点赞:(0)

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);

   


 

}



 


网站公告

今日签到

点亮在社区的每一天
去签到