annotate tests.c @ 343:2b58dd3f5e6c

Add more tests.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 23 Feb 2016 23:10:57 +0200
parents 09c2f6abf694
children d5e5f6019584
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 #include "th_types.h"
274
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
2 #include "th_args.h"
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 #include "th_util.h"
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4 #include "th_string.h"
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 #include "th_crypto.h"
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 #define SET_BUF_SIZE 128
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
8 #define SET_MAX_TESTS 64
291
886a42023415 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
9 #define SET_SENTINEL_BYTE 0x0e5
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
10
291
886a42023415 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
11
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
12 typedef struct
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
13 {
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
14 char *header, *res;
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
15 } test_ctx;
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
16
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
17
291
886a42023415 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
18 // Globals
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
19 int tests_failed, tests_passed, tests_total, tests_sets, tests_nenabled;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
20 int tests_enabled[SET_MAX_TESTS];
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
21
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
22 char buf1[SET_BUF_SIZE+2], buf2[SET_BUF_SIZE+2];
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
24
274
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
25 // Define option arguments
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
26 static const th_optarg_t arg_opts[] =
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
27 {
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
28 { 0, '?', "help", "Show this help", OPT_NONE },
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
29 { 1, 'v', "verbose", "Be more verbose", OPT_NONE },
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
30 { 2, 't', "tests", "Perform tests -t <set>[,<set2>..]", OPT_ARGREQ },
274
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
31 };
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
32
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
33 static const int arg_nopts = sizeof(arg_opts) / sizeof(arg_opts[0]);
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
34
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
35
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
36 void tprintv(const int level, const char *fmt, va_list ap)
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
37 {
311
31668615083e Fix test printing function :S
Matti Hamalainen <ccr@tnsp.org>
parents: 306
diff changeset
38 if (level <= th_verbosityLevel)
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
39 vfprintf(stdout, fmt, ap);
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
40 }
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
41
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
42
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
43 void tprint(const int level, const char *fmt, ...)
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
44 {
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
45 va_list ap;
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
46 va_start(ap, fmt);
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
47 tprintv(level, fmt, ap);
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
48 va_end(ap);
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
49 }
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
50
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
51
274
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
52 void arg_show_help(void)
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
53 {
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
54 th_print_banner(stdout, th_prog_name, "[options]");
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
55 th_args_help(stdout, arg_opts, arg_nopts, 0);
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
56 }
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
57
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
58
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
59 BOOL arg_handle_opt(const int optN, char *optArg, char *currArg)
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
60 {
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
61 switch (optN)
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
62 {
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
63 case 0:
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
64 arg_show_help();
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
65 exit(0);
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
66 break;
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
67
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
68 case 1:
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
69 th_verbosityLevel++;
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
70 break;
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
71
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
72 case 2:
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
73 {
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
74 BOOL ret = TRUE;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
75 char *pos, *pstr, *next;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
76 pos = pstr = th_strdup(optArg);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
77 memset(tests_enabled, 0, sizeof(tests_enabled));
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
78
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
79 do {
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
80 next = strchr(pos, ',');
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
81 if (next != NULL)
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
82 *next = 0;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
83
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
84 char *tmp = th_strdup_trim(pos, TH_TRIM_BOTH);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
85 if (tmp != NULL)
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
86 {
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
87 int val = atoi(tmp);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
88 if (val > 0 && val <= SET_MAX_TESTS)
300
385d0b40a6c8 Fix -t option handling, had a off-by one in value handling.
Matti Hamalainen <ccr@tnsp.org>
parents: 296
diff changeset
89 tests_enabled[val - 1] = 1;
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
90 else
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
91 {
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
92 THERR("Invalid test number #%d, out of range [%d .. %d]\n", val, 1, SET_MAX_TESTS);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
93 ret = FALSE;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
94 }
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
95 th_free(tmp);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
96 }
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
97
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
98 if (next != NULL)
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
99 pos = next + 1;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
100 } while (next != NULL);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
101 th_free(pstr);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
102 return ret;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
103 }
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
104 break;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
105
274
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
106 default:
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
107 THERR("Unknown option '%s'.\n", currArg);
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
108 return FALSE;
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
109 }
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
110
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
111 return TRUE;
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
112 }
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
113
f875db8634b6 Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents: 272
diff changeset
114
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
115 void test_init(test_ctx *ctx)
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
116 {
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
117 memset(ctx, 0, sizeof(test_ctx));
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
118 }
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
119
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
120
342
09c2f6abf694 Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents: 340
diff changeset
121 void test_end(test_ctx *ctx)
09c2f6abf694 Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents: 340
diff changeset
122 {
09c2f6abf694 Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents: 340
diff changeset
123 th_free_r(&ctx->header);
09c2f6abf694 Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents: 340
diff changeset
124 th_free_r(&ctx->res);
09c2f6abf694 Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents: 340
diff changeset
125 }
09c2f6abf694 Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents: 340
diff changeset
126
09c2f6abf694 Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents: 340
diff changeset
127
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
128 void test_start_v(test_ctx *ctx, const char *fmt, va_list ap)
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
129 {
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
130 tests_total++;
342
09c2f6abf694 Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents: 340
diff changeset
131 test_end(ctx);
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
132 ctx->header = th_strdup_vprintf(fmt, ap);
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
133 }
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
134
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
135
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
136 void test_start(test_ctx *ctx, const char *fmt, ...)
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
137 {
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
138 va_list ap;
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
139 va_start(ap, fmt);
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
140 test_start_v(ctx, fmt, ap);
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
141 va_end(ap);
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
142 }
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
143
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
144
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
145 void test_result_msg_v(test_ctx *ctx, BOOL check, const char *fmt, va_list ap)
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
146 {
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
147 if (check)
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
148 {
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
149 tprint(2, "%s: OK\n", ctx->header);
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
150 tests_passed++;
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
151 }
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
152 else
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
153 {
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
154 tprint(0, "%s: FAIL\n", ctx->header);
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
155 if (fmt != NULL)
263
423771158575 Add more tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 261
diff changeset
156 {
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
157 tprint(0, " - ");
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
158 tprintv(0, fmt, ap);
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
159 tprint(0, "\n");
263
423771158575 Add more tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 261
diff changeset
160 }
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
161 if (ctx->res != NULL)
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
162 tprint(0, "%s\n", ctx->res);
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
163 tests_failed++;
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
164 }
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
165 }
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
166
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
167
305
5afd918cbd79 Have a return value for test result functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 304
diff changeset
168 BOOL test_result_msg(test_ctx *ctx, BOOL check, const char *fmt, ...)
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
169 {
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
170 va_list ap;
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
171 va_start(ap, fmt);
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
172 test_result_msg_v(ctx, check, fmt, ap);
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
173 va_end(ap);
305
5afd918cbd79 Have a return value for test result functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 304
diff changeset
174 return check;
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
175 }
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
176
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
177
305
5afd918cbd79 Have a return value for test result functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 304
diff changeset
178 BOOL test_result(test_ctx *ctx, BOOL check)
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
179 {
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
180 test_result_msg_v(ctx, check, NULL, NULL);
305
5afd918cbd79 Have a return value for test result functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 304
diff changeset
181 return check;
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
182 }
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
183
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
184
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
185
319
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
186 void test_snprintf_do(size_t len, const char *msg, const char *fmt, va_list ap)
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
187 {
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
188 int ret1, ret2;
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
189 va_list tmp;
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
190 test_ctx ctx;
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
191
263
423771158575 Add more tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 261
diff changeset
192 // Test basic *printf() functionality
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
193 test_init(&ctx);
319
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
194 test_start(&ctx, "th_vsnprintf(%" TH_PRIu_SIZE_T ", \"%s\", %s)", len, fmt, msg);
259
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
195
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
196 memset(buf1, SET_SENTINEL_BYTE, SET_BUF_SIZE+2); buf1[SET_BUF_SIZE+1] = 0;
33652234f162 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 257
diff changeset
197 memset(buf2, SET_SENTINEL_BYTE, SET_BUF_SIZE+2); buf2[SET_BUF_SIZE+1] = 0;
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
198
339
46a0fab6ca1f Fix snprintf() test running.
Matti Hamalainen <ccr@tnsp.org>
parents: 338
diff changeset
199 va_copy(tmp, ap); ret1 = th_vsnprintf(buf1, len, fmt, tmp);
46a0fab6ca1f Fix snprintf() test running.
Matti Hamalainen <ccr@tnsp.org>
parents: 338
diff changeset
200 va_copy(tmp, ap); ret2 = vsnprintf(buf2, len, fmt, tmp);
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
201
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
202 test_result_msg(&ctx, ret1 == ret2, "retval mismatch %d [th] != %d [libc]", ret1, ret2);
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
203 test_result_msg(&ctx, strcmp(buf1, buf2) == 0, "result mismatch '%s' [th] != '%s' [libc]", buf1, buf2);
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
204
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
205 test_result_msg(&ctx, (unsigned char) buf1[len] == SET_SENTINEL_BYTE, "buffer #1 overflow, sentinel 0x%02x", buf1[len]);
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
206 test_result_msg(&ctx, (unsigned char) buf2[len] == SET_SENTINEL_BYTE, "buffer #2 overflow, sentinel 0x%02x", buf2[len]);
261
f1decaee6157 Improve tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 259
diff changeset
207
263
423771158575 Add more tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 261
diff changeset
208 // Test th_strdup_vprintf()
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
209 test_start(&ctx, "th_strdup_vprintf('%s')", fmt);
339
46a0fab6ca1f Fix snprintf() test running.
Matti Hamalainen <ccr@tnsp.org>
parents: 338
diff changeset
210 va_copy(tmp, ap);
46a0fab6ca1f Fix snprintf() test running.
Matti Hamalainen <ccr@tnsp.org>
parents: 338
diff changeset
211 char *str = th_strdup_vprintf(fmt, tmp);
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
212 test_result_msg(&ctx, str != NULL, "result NULL");
261
f1decaee6157 Improve tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 259
diff changeset
213 th_free(str);
342
09c2f6abf694 Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents: 340
diff changeset
214 test_end(&ctx);
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
215 }
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
216
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
217
319
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
218 void test_snprintf(const char *msg, const char *fmt, ...)
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
219 {
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
220 va_list ap, tmp;
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
221 va_start(ap, fmt);
319
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
222 va_copy(tmp, ap); test_snprintf_do(0, msg, fmt, tmp);
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
223 va_copy(tmp, ap); test_snprintf_do(1, msg, fmt, tmp);
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
224 va_copy(tmp, ap); test_snprintf_do(2, msg, fmt, tmp);
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
225 va_copy(tmp, ap); test_snprintf_do(16, msg, fmt, tmp);
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
226 va_copy(tmp, ap); test_snprintf_do(SET_BUF_SIZE, msg, fmt, tmp);
255
7549e279fe18 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 254
diff changeset
227 va_end(ap);
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
228 tprint(2,
291
886a42023415 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
229 "-----------------------------------------------------\n");
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
230 }
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
231
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
232
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
233 BOOL test_set_start(const char *str)
264
9b6fd2953d8c Add test header printing function.
Matti Hamalainen <ccr@tnsp.org>
parents: 263
diff changeset
234 {
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
235 if (tests_enabled[tests_sets++])
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
236 {
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
237 tests_nenabled++;
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
238 tprint(1,
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
239 "======================================================\n"
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
240 " Set #%d : %s tests\n"
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
241 "======================================================\n",
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
242 tests_sets, str);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
243
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
244 return TRUE;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
245 }
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
246 else
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
247 return FALSE;
264
9b6fd2953d8c Add test header printing function.
Matti Hamalainen <ccr@tnsp.org>
parents: 263
diff changeset
248 }
9b6fd2953d8c Add test header printing function.
Matti Hamalainen <ccr@tnsp.org>
parents: 263
diff changeset
249
9b6fd2953d8c Add test header printing function.
Matti Hamalainen <ccr@tnsp.org>
parents: 263
diff changeset
250
327
b0f9f806c8c9 Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents: 326
diff changeset
251 #define NCOUNT(xxx) (sizeof(xxx) / sizeof(xxx[0]))
b0f9f806c8c9 Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents: 326
diff changeset
252
b0f9f806c8c9 Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents: 326
diff changeset
253
263
423771158575 Add more tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 261
diff changeset
254 #define TEST2(fun, str1, str2, ret) do { \
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
255 test_ctx ctx; test_init(&ctx); \
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
256 test_start(&ctx, # fun "('%s', '%s')", str1, str2); \
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
257 test_result(&ctx, ( fun (str1, str2) == 0) == ret); \
342
09c2f6abf694 Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents: 340
diff changeset
258 test_end(&ctx); \
263
423771158575 Add more tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 261
diff changeset
259 } while (0)
423771158575 Add more tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 261
diff changeset
260
266
3a020aa05f28 More tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 265
diff changeset
261 #define TEST2B(fun, str1, str2, ret) do { \
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
262 test_ctx ctx; test_init(&ctx); \
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
263 test_start(&ctx, # fun "('%s', '%s')", str1, str2); \
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
264 test_result(&ctx, fun (str1, str2) == ret); \
342
09c2f6abf694 Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents: 340
diff changeset
265 test_end(&ctx); \
266
3a020aa05f28 More tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 265
diff changeset
266 } while (0)
3a020aa05f28 More tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 265
diff changeset
267
263
423771158575 Add more tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 261
diff changeset
268 #define TEST3(fun, str1, str2, len, ret) do { \
303
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
269 test_ctx ctx; test_init(&ctx); \
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
270 test_start(&ctx, # fun "('%s', '%s', %d)", str1, str2, len); \
54ea7a73e5fa Implement test contexts.
Matti Hamalainen <ccr@tnsp.org>
parents: 301
diff changeset
271 test_result(&ctx, ( fun (str1, str2, len) == 0) == ret); \
342
09c2f6abf694 Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents: 340
diff changeset
272 test_end(&ctx); \
263
423771158575 Add more tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 261
diff changeset
273 } while (0)
423771158575 Add more tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 261
diff changeset
274
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
275
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
276
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
277 int main(int argc, char *argv[])
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
278 {
334
b90173719330 Add more tests (some of which will fail for now due to unimplemented features).
Matti Hamalainen <ccr@tnsp.org>
parents: 333
diff changeset
279 size_t i1, i2, i3, i4;
326
75b22d6f8a71 Simplify and improve integer sprintf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 319
diff changeset
280 char buf[64], buf2[64];
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
281
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
282 //
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
283 // Initialization
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
284 //
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
285 th_init("th-test", "th-libs unit tests", "0.0.1", NULL, NULL);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
286 th_verbosityLevel = 0;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
287
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
288 if (sizeof(char) != sizeof(unsigned char))
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
289 {
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
290 THERR("sizeof(char) != sizeof(unsigned char)???\n");
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
291 return -1;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
292 }
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
293
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
294 tests_failed = tests_passed = tests_total = tests_sets = tests_nenabled = 0;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
295 for (i1 = 0; i1 < SET_MAX_TESTS; i1++)
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
296 tests_enabled[i1] = 1;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
297
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
298 //
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
299 // Parse command line arguments
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
300 //
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
301 if (!th_args_process(argc, argv, arg_opts, arg_nopts,
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
302 arg_handle_opt, NULL, 0))
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
303 return 0;
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
304
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
305
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
306 //
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
307 // Test series #1
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
308 //
334
b90173719330 Add more tests (some of which will fail for now due to unimplemented features).
Matti Hamalainen <ccr@tnsp.org>
parents: 333
diff changeset
309 char *i_fmts[] = { "", "05", "5", "5", ".5", "5.5", "05.5", "3", "3.2", "3", };
b90173719330 Add more tests (some of which will fail for now due to unimplemented features).
Matti Hamalainen <ccr@tnsp.org>
parents: 333
diff changeset
310 char *i_mods[] = { "", "-", "+", "#", };
343
2b58dd3f5e6c Add more tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 342
diff changeset
311 char *i_types[] = { "d", "u", "i", "x", "X", "o", };
295
bd69fdaad70a Rename test sets.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
312 if (test_set_start("printf() integer"))
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
313 {
312
f1dfabd89a13 Improve tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 311
diff changeset
314 int i_vals[] = { 0, -0, -1, 2, -2, 612342, -612342, 0x1fff, 0x8000000, };
315
2b657dcf346e More tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 312
diff changeset
315
327
b0f9f806c8c9 Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents: 326
diff changeset
316 for (i1 = 0; i1 < NCOUNT(i_vals); i1++)
315
2b657dcf346e More tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 312
diff changeset
317 {
319
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
318 snprintf(buf, sizeof(buf), "%d", i_vals[i1]);
326
75b22d6f8a71 Simplify and improve integer sprintf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 319
diff changeset
319
334
b90173719330 Add more tests (some of which will fail for now due to unimplemented features).
Matti Hamalainen <ccr@tnsp.org>
parents: 333
diff changeset
320 for (i4 = 0; i4 < NCOUNT(i_mods); i4++)
332
799e38f867da Use NCOUNT().
Matti Hamalainen <ccr@tnsp.org>
parents: 331
diff changeset
321 for (i3 = 0; i3 < NCOUNT(i_types); i3++)
799e38f867da Use NCOUNT().
Matti Hamalainen <ccr@tnsp.org>
parents: 331
diff changeset
322 for (i2 = 0; i2 < NCOUNT(i_fmts); i2++)
326
75b22d6f8a71 Simplify and improve integer sprintf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 319
diff changeset
323 {
334
b90173719330 Add more tests (some of which will fail for now due to unimplemented features).
Matti Hamalainen <ccr@tnsp.org>
parents: 333
diff changeset
324 snprintf(buf2, sizeof(buf2), "%%%s%s%s", i_mods[i4], i_fmts[i2], i_types[i3]);
326
75b22d6f8a71 Simplify and improve integer sprintf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 319
diff changeset
325 test_snprintf(buf, buf2, i_vals[i1]);
75b22d6f8a71 Simplify and improve integer sprintf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 319
diff changeset
326 }
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
327 }
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
328 }
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
329
331
6e42d50c08c4 Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents: 328
diff changeset
330 if (test_set_start("printf() integer 64bit"))
6e42d50c08c4 Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents: 328
diff changeset
331 {
333
a705d21ca25b Simplify tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 332
diff changeset
332 int64_t i_vals64[] = { 0, -0, -1, 2, -2, 612342, -612342, 0x3342344341fff, 0x1f8000000, };
331
6e42d50c08c4 Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents: 328
diff changeset
333
333
a705d21ca25b Simplify tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 332
diff changeset
334 for (i1 = 0; i1 < NCOUNT(i_vals64); i1++)
331
6e42d50c08c4 Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents: 328
diff changeset
335 {
338
b6f2efd0f6f2 Fix format string.
Matti Hamalainen <ccr@tnsp.org>
parents: 334
diff changeset
336 snprintf(buf, sizeof(buf), "%" TH_PRId64, i_vals64[i1]);
331
6e42d50c08c4 Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents: 328
diff changeset
337
340
cde5415c4201 Fix 64bit int tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 339
diff changeset
338 for (i4 = 0; i4 < NCOUNT(i_mods); i4++)
332
799e38f867da Use NCOUNT().
Matti Hamalainen <ccr@tnsp.org>
parents: 331
diff changeset
339 for (i3 = 0; i3 < NCOUNT(i_types); i3++)
799e38f867da Use NCOUNT().
Matti Hamalainen <ccr@tnsp.org>
parents: 331
diff changeset
340 for (i2 = 0; i2 < NCOUNT(i_fmts); i2++)
331
6e42d50c08c4 Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents: 328
diff changeset
341 {
340
cde5415c4201 Fix 64bit int tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 339
diff changeset
342 snprintf(buf2, sizeof(buf2), "%s%sll%s", i_mods[i4], i_fmts[i2], i_types[i3]);
333
a705d21ca25b Simplify tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 332
diff changeset
343 test_snprintf(buf, buf2, i_vals64[i1]);
331
6e42d50c08c4 Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents: 328
diff changeset
344 }
6e42d50c08c4 Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents: 328
diff changeset
345 }
6e42d50c08c4 Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents: 328
diff changeset
346 }
6e42d50c08c4 Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents: 328
diff changeset
347
296
ec8357d02a52 Add floating point tests (which will fail for now).
Matti Hamalainen <ccr@tnsp.org>
parents: 295
diff changeset
348 if (test_set_start("printf() float"))
ec8357d02a52 Add floating point tests (which will fail for now).
Matti Hamalainen <ccr@tnsp.org>
parents: 295
diff changeset
349 {
343
2b58dd3f5e6c Add more tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 342
diff changeset
350 double f_vals[] = { 2.02, 612342.234, -2.07, -612342.12, 437692.9876543219, 0x1fff, 0x8000000, 0.15625 };
315
2b657dcf346e More tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 312
diff changeset
351 char *f_fmts[] = { "%f", "%1.1f", "%5.5f", "%5f", "%-5f", "", "%-2.2f", "%05.5f" };
296
ec8357d02a52 Add floating point tests (which will fail for now).
Matti Hamalainen <ccr@tnsp.org>
parents: 295
diff changeset
352
327
b0f9f806c8c9 Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents: 326
diff changeset
353 for (i1 = 0; i1 < NCOUNT(f_vals); i1++)
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
354 {
319
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
355 snprintf(buf, sizeof(buf), "%f", f_vals[i1]);
327
b0f9f806c8c9 Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents: 326
diff changeset
356 for (i2 = 0; i2 < NCOUNT(f_fmts); i2++)
319
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
357 test_snprintf(buf, f_fmts[i2], f_vals[i1]);
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
358 }
296
ec8357d02a52 Add floating point tests (which will fail for now).
Matti Hamalainen <ccr@tnsp.org>
parents: 295
diff changeset
359 }
ec8357d02a52 Add floating point tests (which will fail for now).
Matti Hamalainen <ccr@tnsp.org>
parents: 295
diff changeset
360
295
bd69fdaad70a Rename test sets.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
361 if (test_set_start("printf() string"))
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
362 {
289
7122026b0ece Add more subtests.
Matti Hamalainen <ccr@tnsp.org>
parents: 288
diff changeset
363 char *s_vals[] = { "", "XYZXYZ", "xxx yyy zzz ppp fff", NULL, "X", "abcde", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", };
301
5a758be2769e More tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 300
diff changeset
364 char *s_fmts[] = { "%s", "%2s", "%-2s", "%5s", "%-5s", "%16s", "%-16s", "%1s", "%-1s", "% 2s", "%03s", "% -12s", "% 03s", "%-.15s", "%.8s" };
265
effb2786f6a6 More work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 264
diff changeset
365
327
b0f9f806c8c9 Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents: 326
diff changeset
366 for (i1 = 0; i1 < NCOUNT(s_vals); i1++)
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
367 {
327
b0f9f806c8c9 Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents: 326
diff changeset
368 for (i2 = 0; i2 < NCOUNT(s_fmts); i2++)
319
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
369 test_snprintf(s_vals[i1], s_fmts[i2], s_vals[i1]);
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
370 }
288
89c7696acb82 Add some tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 282
diff changeset
371 }
89c7696acb82 Add some tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 282
diff changeset
372
295
bd69fdaad70a Rename test sets.
Matti Hamalainen <ccr@tnsp.org>
parents: 293
diff changeset
373 if (test_set_start("printf() char"))
288
89c7696acb82 Add some tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 282
diff changeset
374 {
319
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
375 const char c_val = 'x';
f2af6049d958 Improve testing.
Matti Hamalainen <ccr@tnsp.org>
parents: 317
diff changeset
376 const char *c_msg = "x";
328
0146aa9a9524 Simplify char printf tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 327
diff changeset
377 char *c_fmts[] = { "a%cBC", "%c", "", "%0c", "%1c", "% c", "%-3c", "%3c", "%.3c", "%-.3c", "%-3.3c", "%.c" };
0146aa9a9524 Simplify char printf tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 327
diff changeset
378
0146aa9a9524 Simplify char printf tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 327
diff changeset
379 for (i1 = 0; i1 < NCOUNT(c_fmts); i1++)
0146aa9a9524 Simplify char printf tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 327
diff changeset
380 test_snprintf(c_msg, c_fmts[i1], c_val);
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
381 }
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
382
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
383 //
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
384 // String matching functions
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
385 //
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
386 if (test_set_start("String matching #1"))
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
387 {
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
388 TEST2(th_strcasecmp, "aSdFq", "asdfq", TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
389 TEST2(th_strcasecmp, "aSdFq", "asFfq", FALSE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
390 TEST2(th_strcasecmp, "abcde", "abcde", TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
391 TEST2(th_strcasecmp, "öäå", "öäå", TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
392 TEST2(th_strcasecmp, "aöäå", "aöäå", TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
393 }
255
7549e279fe18 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 254
diff changeset
394
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
395 if (test_set_start("String matching #2"))
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
396 {
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
397 TEST3(th_strncasecmp, "aSdFq", "asFfq", 4, FALSE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
398 TEST3(th_strncasecmp, "aSdFq", "asFfq", 2, TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
399 TEST3(th_strncasecmp, "aSdFq", "asDfq", 3, TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
400 TEST3(th_strncasecmp, "aSdFq", "asDfq", 2, TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
401 TEST3(th_strncasecmp, "aSdFq", "asDfq", 0, TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
402 TEST3(th_strncasecmp, "aSdFq", "QsDfq", 0, TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
403 TEST3(th_strncasecmp, "aSdFq", "QsDfq", 1, FALSE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
404 }
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
405
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
406 if (test_set_start("String matching #3"))
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
407 {
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
408 TEST2B(th_strmatch, "abba ABBAkukka lol", "*lol", TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
409 TEST2B(th_strmatch, "abba ABBAkukka lol", "*lo*", TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
410 TEST2B(th_strmatch, "abba ABBAkukka lol", "*lo", FALSE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
411 TEST2B(th_strmatch, "abba ABBAkukka lol", "abba", FALSE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
412 TEST2B(th_strmatch, "abba ABBAkukka lol", "abba*", TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
413 TEST2B(th_strmatch, "abba ABBAkukka lol", "abbak*", FALSE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
414 TEST2B(th_strmatch, "abba ABBAöökukka lol", "*abbaö?", FALSE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
415 }
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
416
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
417 if (test_set_start("String matching #4"))
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
418 {
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
419 TEST2B(th_strcasematch, "abba ABBAkukka lol", "abbak*", FALSE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
420 TEST2B(th_strcasematch, "abba ABBAkukka lol", "*abbak*", TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
421 TEST2B(th_strcasematch, "abba ABBAkukka lol", "*abbak?", FALSE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
422 TEST2B(th_strcasematch, "abba ABBAkukka lol", "?bba?abba*", TRUE);
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
423 }
266
3a020aa05f28 More tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 265
diff changeset
424
265
effb2786f6a6 More work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 264
diff changeset
425 // Tests that test for things that do not work correctly yet
effb2786f6a6 More work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 264
diff changeset
426 // Unicode / multibyte UTF-8 causes problems here
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
427 if (test_set_start("Invalid"))
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
428 {
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
429 TEST2(th_strcasecmp, "ÖÄÅ", "öäå", FALSE); // SHOULD match
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
430 TEST3(th_strncasecmp, "Aäöå", "aöå", 2, TRUE); // should NOT match
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
431 TEST2B(th_strmatch, "öriÖRI! lol", "?ri?RI!*", FALSE); // should match
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
432 }
266
3a020aa05f28 More tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 265
diff changeset
433
255
7549e279fe18 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 254
diff changeset
434 //
7549e279fe18 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 254
diff changeset
435 // Print summary and exit
7549e279fe18 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 254
diff changeset
436 //
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
437 tprint(1,
276
56b0de9f9d44 Improve tests output per verbosity level.
Matti Hamalainen <ccr@tnsp.org>
parents: 274
diff changeset
438 "======================================================\n");
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
439
304
3fcf42cce43d Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents: 303
diff changeset
440 tprint(0,
312
f1dfabd89a13 Improve tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 311
diff changeset
441 "%d tests failed, %d passed (%d main tests), %d test sets of %d sets total.\n\n",
282
f0cb48b34463 Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 276
diff changeset
442 tests_failed, tests_passed, tests_total, tests_nenabled, tests_sets);
255
7549e279fe18 Work on tests.
Matti Hamalainen <ccr@tnsp.org>
parents: 254
diff changeset
443
254
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
444 return 0;
3d1e2af4e4e6 Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
445 }