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