82430a850145156ac747db507b61708fb62c6021
[mono.git] / eglib / test / test.c
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <stdarg.h>
4
5 #include "test.h"
6
7 void 
8 run_test(Test *test)
9 {
10         char *result; 
11         printf("  %s: ", test->name);
12         fflush(stdout);
13         if((result = test->handler()) == NULL) {
14                 printf("OK\n");
15         } else {
16                 printf("FAILED (%s)\n", result);
17                 free(result);
18         }
19 }
20
21 void
22 run_group(const char *name, LoadGroupHandler group_handler)
23 {
24         Test *tests = group_handler();
25         int i;
26         
27         printf("[%s]\n", name);
28
29         for(i = 0; tests[i].name != NULL; i++) {
30                 run_test(&(tests[i]));
31         }
32 }
33
34 void
35 run_groups(const char *first_name, LoadGroupHandler first_group_handler, ...)
36 {
37         va_list args;
38         va_start(args, first_group_handler);
39
40         run_group(first_name, first_group_handler);
41         
42         while(1) {
43                 const char *name;
44                 LoadGroupHandler group_handler;
45
46                 if((name = (const char *)va_arg(args, const char **)) == NULL) {
47                         break;
48                 }
49                 
50                 if((group_handler = (LoadGroupHandler)va_arg(args, 
51                         LoadGroupHandler)) == NULL) {
52                         break;
53                 }
54
55                 run_group(name, group_handler);
56         }
57
58         va_end(args);
59 }
60