Como podemos aplicar uma função não-vararg em uma va_lis

História de fundo

Estou portando oVerificação rápid estrutura de teste de unidade para C (consulte o código de trabalho em GitHub). A sintaxe será:

for_all(property, gen1, gen2, gen3 ...);

Ondeproperty é uma função para testar, por exemplobool is_odd(int). gen1, gen2, etc. são funções que geram valores de entrada paraproperty. Alguns geram números inteiros, outros geram caracteres, outros geram cadeias e assim por diant

for_all aceitará uma função com entradas arbitrárias (qualquer número de argumentos, qualquer tipo de argumento).for_all executará os geradores, criando valores de teste para passar para a função de propriedade. Por exemplo, a propriedadeis_odd é uma função com o tipobool f(int). for_all usará o gera para criar 100 casos de teste. Se a propriedade retornar false para qualquer um deles,for_all imprimirá os valores incorretos do caso de teste. De outra forma,for_all imprimirá"SUCCESS".

Portantofor_all deve usar umva_list para acessar os geradores. Depois que chamamos as funções do gerador, como as passamos para a função de propriedad

Exempl

E seis_odd tem o tipobool f(int), como implementaríamos uma funçãoapply() que possui esta sintaxe:

apply(is_odd, generated_values);
Secondary Issue

VejoASSI.

Como podemos imprimir de forma inteligente os valores arbitrários de um caso de teste com falha? Um caso de teste pode ser um único inteiro, ou dois caracteres, ou uma string ou alguma combinação dos itens acima? Não saberemos antecipadamente se deve usar:

printf("%d %d %d\n", some_int, some_int, some_int);printf("%c\n" a_character);printf("%s%s\n", a_string, a_struct_requiring_its_own_printf_function);

questionAnswers(1)

yourAnswerToTheQuestion