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