为多个typedef创建测试函数 - C.

时间:2018-03-11 12:48:02

标签: c unit-testing typedef

在提出问题之前,我通常希望有一个更好的开端,但我有点不知道如何开始这个。

我的任务是在C中创建一个小型测试框架,严格使用大量不同的typedef struct s。

假设我有一个返回mytype_t的函数:

typedef struct mytype {
    void * data;
} mytype_t;

mytype_t my_type_func(char *p) {
    mytype_t q;
    q->data = p;
    return q;
}

现在我想编写一个函数来确保一切正常:

void CUSTOM_ASSERT(void (*test_func)(char*), mytype_t r){
    mytype_t p = (*test_func);
    if(p->data == r->data){
        puts("Test X Passed");
}

来自driver.c

int main(void) {
    mytype_t t;
    t->data = "test";
    char *test = "test";
    CUSTOM_ASSERT(my_type_func(test), t);
}

现在这对于这一种类型和功能都很好用,但是有超过100 typedef structs和函数不带10个参数加上一些参数可以是其他typedefs。这使得使用va_list有点棘手,因为这些类型没有可变参数宏(我知道)。

最好的方法是什么?我正在尝试这样的事情:

void CUSTOM_ASSERT(void (*test_func)(...), void *should)

但我不清楚函数指针应该能够转换CUSTOM_ASSERT的第二个参数的返回类型。

0 个答案:

没有答案