1/* 2 * Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC") 3 * Copyright (C) 2000, 2001 Internet Software Consortium. 4 * 5 * Permission to use, copy, modify, and/or distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 10 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 11 * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 12 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 14 * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15 * PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18/* $Id: driver.c,v 1.11 2007/06/19 23:47:00 tbox Exp $ */ 19 20#include <config.h> 21 22#include <stdlib.h> 23#include <stdio.h> 24#include <time.h> 25 26#include <isc/string.h> 27#include <isc/util.h> 28 29#include "driver.h" 30 31#include "testsuite.h" 32 33#define NTESTS (sizeof(tests) / sizeof(test_t)) 34 35const char *gettime(void); 36const char *test_result_totext(test_result_t); 37 38/* 39 * Not thread safe. 40 */ 41const char * 42gettime(void) { 43 static char now[512]; 44 time_t t; 45 46 (void)time(&t); 47 48 strftime(now, sizeof(now) - 1, 49 "%A %d %B %H:%M:%S %Y", 50 localtime(&t)); 51 52 return (now); 53} 54 55const char * 56test_result_totext(test_result_t result) { 57 const char *s; 58 switch (result) { 59 case PASSED: 60 s = "PASS"; 61 break; 62 case FAILED: 63 s = "FAIL"; 64 break; 65 case UNTESTED: 66 s = "UNTESTED"; 67 break; 68 case UNKNOWN: 69 default: 70 s = "UNKNOWN"; 71 break; 72 } 73 74 return (s); 75} 76 77int 78main(int argc, char **argv) { 79 test_t *test; 80 test_result_t result; 81 unsigned int n_failed; 82 unsigned int testno; 83 84 UNUSED(argc); 85 UNUSED(argv); 86 87 printf("S:%s:%s\n", SUITENAME, gettime()); 88 89 n_failed = 0; 90 for (testno = 0; testno < NTESTS; testno++) { 91 test = &tests[testno]; 92 printf("T:%s:%u:A\n", test->tag, testno + 1); 93 printf("A:%s\n", test->description); 94 result = test->func(); 95 printf("R:%s\n", test_result_totext(result)); 96 if (result != PASSED) 97 n_failed++; 98 } 99 100 printf("E:%s:%s\n", SUITENAME, gettime()); 101 102 if (n_failed > 0) 103 exit(1); 104 105 return (0); 106} 107 108