test.c revision e3f27cfced57ac9c3b5306947d37411479a68c2e
1#include "test/jemalloc_test.h" 2 3static unsigned test_count = 0; 4static test_status_t test_counts[test_status_count] = {0, 0, 0}; 5static test_status_t test_status = test_status_pass; 6static const char * test_name = ""; 7 8JEMALLOC_ATTR(format(printf, 1, 2)) 9void 10test_skip(const char *format, ...) 11{ 12 va_list ap; 13 14 va_start(ap, format); 15 malloc_vcprintf(NULL, NULL, format, ap); 16 va_end(ap); 17 malloc_printf("\n"); 18 test_status = test_status_skip; 19} 20 21JEMALLOC_ATTR(format(printf, 1, 2)) 22void 23test_fail(const char *format, ...) 24{ 25 va_list ap; 26 27 va_start(ap, format); 28 malloc_vcprintf(NULL, NULL, format, ap); 29 va_end(ap); 30 malloc_printf("\n"); 31 test_status = test_status_fail; 32} 33 34static const char * 35test_status_string(test_status_t test_status) 36{ 37 38 switch (test_status) { 39 case test_status_pass: return "pass"; 40 case test_status_skip: return "skip"; 41 case test_status_fail: return "fail"; 42 default: not_reached(); 43 } 44} 45 46void 47p_test_init(const char *name) 48{ 49 50 test_count++; 51 test_status = test_status_pass; 52 test_name = name; 53} 54 55void 56p_test_fini(void) 57{ 58 59 test_counts[test_status]++; 60 malloc_printf("%s: %s\n", test_name, test_status_string(test_status)); 61} 62 63test_status_t 64p_test(test_t* t, ...) 65{ 66 test_status_t ret = test_status_pass; 67 va_list ap; 68 69 va_start(ap, t); 70 for (; t != NULL; t = va_arg(ap, test_t*)) { 71 t(); 72 if (test_status > ret) 73 ret = test_status; 74 } 75 va_end(ap); 76 77 malloc_printf("--- %s: %u/%u, %s: %u/%u, %s: %u/%u ---\n", 78 test_status_string(test_status_pass), 79 test_counts[test_status_pass], test_count, 80 test_status_string(test_status_skip), 81 test_counts[test_status_skip], test_count, 82 test_status_string(test_status_fail), 83 test_counts[test_status_fail], test_count); 84 85 return (ret); 86} 87 88void 89p_test_fail(const char *prefix, const char *message) 90{ 91 92 malloc_cprintf(NULL, NULL, "%s%s\n", prefix, message); 93 test_status = test_status_fail; 94} 95