xref: /openbsd-src/regress/lib/libradius/main.c (revision f4d7e9fdc554ed2f241898d0e23f0e8874afdc9a)
10eaf192dSyasuoka #include "incs.h"
20eaf192dSyasuoka 
30eaf192dSyasuoka #define TEST_MAX 100
40eaf192dSyasuoka 
50eaf192dSyasuoka struct test_entry {
60eaf192dSyasuoka 	testfunc func;
70eaf192dSyasuoka 	const char *name;
80eaf192dSyasuoka } entries[TEST_MAX];
90eaf192dSyasuoka 
100eaf192dSyasuoka int ntests = 0;
110eaf192dSyasuoka 
test_entry_cmp(const void * a,const void * b)120eaf192dSyasuoka int test_entry_cmp(const void *a, const void *b)
130eaf192dSyasuoka {
140eaf192dSyasuoka 	return strcmp(
150eaf192dSyasuoka 		((struct test_entry *)a)->name,
160eaf192dSyasuoka 		((struct test_entry *)b)->name);
170eaf192dSyasuoka }
180eaf192dSyasuoka 
main(void)190eaf192dSyasuoka int main(void)
200eaf192dSyasuoka {
21*f4d7e9fdSyasuoka 	srandom_deterministic(time(NULL));
220eaf192dSyasuoka 
230eaf192dSyasuoka 	qsort(entries, ntests, sizeof(struct test_entry), test_entry_cmp);
240eaf192dSyasuoka 
250eaf192dSyasuoka 	for (int i = 0; i < ntests; i++) {
260eaf192dSyasuoka 		fprintf(stderr, "running test %s\n", entries[i].name);
270eaf192dSyasuoka 		entries[i].func();
280eaf192dSyasuoka 	}
290eaf192dSyasuoka 
300eaf192dSyasuoka 	fprintf(stderr, "tests are successfully completed.\n");
310eaf192dSyasuoka 	return 0;
320eaf192dSyasuoka }
330eaf192dSyasuoka 
check_failed(const char * expr,const char * file,int line)340eaf192dSyasuoka void check_failed(const char *expr, const char *file, int line)
350eaf192dSyasuoka {
360eaf192dSyasuoka 	fprintf(stderr, "CHECK FAILED: %s at file %s line %d\n", expr, file, line);
370eaf192dSyasuoka 	exit(1);
380eaf192dSyasuoka }
390eaf192dSyasuoka 
add_test(testfunc fn,const char * name)400eaf192dSyasuoka void add_test(testfunc fn, const char *name)
410eaf192dSyasuoka {
420eaf192dSyasuoka 	entries[ntests].func = fn;
430eaf192dSyasuoka 	entries[ntests].name = name;
440eaf192dSyasuoka 	ntests++;
450eaf192dSyasuoka }
46