test.cc revision 1.1.1.1
1#include <stdio.h>
2#include <stdlib.h>
3#include <unistd.h>
4
5
6static int succeeded;
7static int failed;
8static bool verbose;
9
10void log_test(bool predicate, const char *file, int line, const char *message)
11{
12	if (predicate)
13	{
14		if (verbose)
15		{
16			printf("Test passed: %s:%d: %s\n", file, line, message);
17		}
18		succeeded++;
19		return;
20	}
21	failed++;
22	printf("Test failed: %s:%d: %s\n", file, line, message);
23}
24
25static void log_totals(void)
26{
27	printf("\n%d tests, %d passed, %d failed\n", succeeded+failed, succeeded, failed);
28}
29
30static void __attribute__((constructor)) init(void)
31{
32	atexit(log_totals);
33}
34
35void test_type_info(void);
36void test_exceptions();
37void test_guards(void);
38int main(int argc, char **argv)
39{
40	int ch;
41
42	while ((ch = getopt(argc, argv, "v")) != -1)
43	{
44		switch (ch)
45		{
46			case 'v':
47				verbose = true;
48			default: break;
49		}
50	}
51
52	test_type_info();
53	test_guards();
54	test_exceptions();
55	return 0;
56}
57