Mercurial > hg > th-libs
annotate tests.c @ 610:a0e8d9c6300b
A bit more work on the regex stuff.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 16 Jan 2020 03:33:11 +0200 |
parents | 566e6ef41f9d |
children | 2e3b81ae8c8a |
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" |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
6 #include "th_config.h" |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
7 #include "th_regex.h" |
254
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
8 |
364 | 9 |
10 #define SET_BUF_SIZE 128 | |
365 | 11 #define SET_BUF_SIZE_2 ((SET_BUF_SIZE) + 32) |
364 | 12 #define SET_MAX_TESTS 64 |
13 #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
|
14 |
291 | 15 |
552 | 16 #define NCOUNT(xxx) (sizeof(xxx) / sizeof(xxx[0])) |
17 | |
18 | |
365 | 19 enum |
20 { | |
21 TST_SUPERFLUOUS = 0x0001, | |
22 TST_CORNERCASE = 0x0002, | |
23 TST_OVERFLOW = 0x0004, | |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
24 TST_BROKEN = 0x1000, |
365 | 25 TST_ALL = 0xffff, |
26 }; | |
27 | |
28 | |
303 | 29 typedef struct |
30 { | |
502
ebf89497305a
Remove some unused functionality for simplification.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
31 char *header; |
551 | 32 BOOL |
33 shown, // Has test result value been shown? | |
34 failed; // Did the test fail? (used by some tests to show extra info) | |
303 | 35 } test_ctx; |
36 | |
37 | |
551 | 38 // Global variables |
39 int tests_failed, // Total number of tests failed | |
40 tests_passed, // Total number of tests passed | |
41 tests_total, // Total number of tests RUN | |
42 sets_total, // Number of test sets | |
43 sets_nenabled; // Number of test sets enabled | |
44 | |
365 | 45 int sets_enabled[SET_MAX_TESTS]; |
259 | 46 |
551 | 47 char buf1[SET_BUF_SIZE_2], |
48 buf2[SET_BUF_SIZE_2]; | |
49 | |
365 | 50 int optFlags = TST_ALL; |
254
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
51 |
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
52 |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
53 // Define option arguments |
380
ac10155d2b4a
Rename th_optarg_t to t_optarg. API break.
Matti Hamalainen <ccr@tnsp.org>
parents:
366
diff
changeset
|
54 static const th_optarg arg_opts[] = |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
55 { |
587
98812eb78d8e
Add new compile-time optional th_optarg struct field o_arg for specifying the option argument description/name. TH_USE_OPT_ARG must be defined at compile time.
Matti Hamalainen <ccr@tnsp.org>
parents:
563
diff
changeset
|
56 { 0, '?', "help" , NULL, "Show this help", OPT_NONE }, |
98812eb78d8e
Add new compile-time optional th_optarg struct field o_arg for specifying the option argument description/name. TH_USE_OPT_ARG must be defined at compile time.
Matti Hamalainen <ccr@tnsp.org>
parents:
563
diff
changeset
|
57 { 1, 'v', "verbose" , NULL, "Be more verbose", OPT_NONE }, |
602 | 58 { 2, 's', "sets" , "sets", "Perform test sets -s <set>[,<set2>..]", OPT_ARGREQ }, |
59 { 3, 't', "tests" , "tests", "Perform only tests (see below)", OPT_ARGREQ }, | |
274
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 |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
62 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
|
63 |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
64 |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
65 BOOL tprintv(const int level, const char *fmt, va_list ap) |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
66 { |
469
fe5b803ae449
Rename the global variable th_verbosityLevel to th_verbosity.
Matti Hamalainen <ccr@tnsp.org>
parents:
465
diff
changeset
|
67 if (level <= th_verbosity) |
363 | 68 { |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
69 vfprintf(stdout, fmt, ap); |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
70 return TRUE; |
363 | 71 } |
72 else | |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
73 return FALSE; |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
74 } |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
75 |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
76 |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
77 BOOL tprint(const int level, const char *fmt, ...) |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
78 { |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
79 BOOL retv; |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
80 va_list ap; |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
81 va_start(ap, fmt); |
363 | 82 retv = tprintv(level, fmt, ap); |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
83 va_end(ap); |
363 | 84 return retv; |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
85 } |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
86 |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
87 |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
88 void arg_show_help(void) |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
89 { |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
90 th_print_banner(stdout, th_prog_name, "[options]"); |
592
4fd6ee473d1b
Fix tests.c after the addition of the width argument to th_args_help().
Matti Hamalainen <ccr@tnsp.org>
parents:
587
diff
changeset
|
91 th_args_help(stdout, arg_opts, arg_nopts, 0, 80 - 2); |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
92 } |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
93 |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
94 |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
95 BOOL arg_handle_opt(const int optN, char *optArg, char *currArg) |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
96 { |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
97 switch (optN) |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
98 { |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
99 case 0: |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
100 arg_show_help(); |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
101 exit(0); |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
102 break; |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
103 |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
104 case 1: |
469
fe5b803ae449
Rename the global variable th_verbosityLevel to th_verbosity.
Matti Hamalainen <ccr@tnsp.org>
parents:
465
diff
changeset
|
105 th_verbosity++; |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
106 break; |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
107 |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
108 case 2: |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
109 { |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
110 BOOL ret = TRUE; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
111 char *pos, *pstr, *next; |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
112 pos = pstr = th_strdup(optArg); |
365 | 113 memset(sets_enabled, 0, sizeof(sets_enabled)); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
114 |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
115 do { |
552 | 116 if ((next = strchr(pos, ',')) != NULL) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
117 *next = 0; |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
118 |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
119 char *tmp = th_strdup_trim(pos, TH_TRIM_BOTH); |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
120 if (tmp != NULL) |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
121 { |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
122 int val = atoi(tmp); |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
123 if (val > 0 && val <= SET_MAX_TESTS) |
365 | 124 sets_enabled[val - 1] = 1; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
125 else |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
126 { |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
127 THERR("Invalid test number #%d, out of range [%d .. %d]\n", val, 1, SET_MAX_TESTS); |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
128 ret = FALSE; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
129 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
130 th_free(tmp); |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
131 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
132 |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
133 if (next != NULL) |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
134 pos = next + 1; |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
135 } while (next != NULL); |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
136 th_free(pstr); |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
137 return ret; |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
138 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
139 break; |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
140 |
365 | 141 case 3: |
366
21bbb2dc4fac
Actually parse the -t option argument.
Matti Hamalainen <ccr@tnsp.org>
parents:
365
diff
changeset
|
142 optFlags = atoi(optArg); |
365 | 143 break; |
144 | |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
145 default: |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
146 THERR("Unknown option '%s'.\n", currArg); |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
147 return FALSE; |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
148 } |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
149 |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
150 return TRUE; |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
151 } |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
152 |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
153 |
342
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
154 void test_end(test_ctx *ctx) |
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
155 { |
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
156 th_free_r(&ctx->header); |
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
157 } |
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
158 |
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
159 |
303 | 160 void test_start_v(test_ctx *ctx, const char *fmt, va_list ap) |
259 | 161 { |
162 tests_total++; | |
502
ebf89497305a
Remove some unused functionality for simplification.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
163 memset(ctx, 0, sizeof(test_ctx)); |
303 | 164 ctx->header = th_strdup_vprintf(fmt, ap); |
259 | 165 } |
166 | |
167 | |
303 | 168 void test_start(test_ctx *ctx, const char *fmt, ...) |
259 | 169 { |
170 va_list ap; | |
171 va_start(ap, fmt); | |
303 | 172 test_start_v(ctx, fmt, ap); |
259 | 173 va_end(ap); |
174 } | |
175 | |
176 | |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
177 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
|
178 { |
259 | 179 if (check) |
180 { | |
363 | 181 if (!ctx->shown && tprint(2, "%s: OK\n", ctx->header)) |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
182 ctx->shown = TRUE; |
363 | 183 |
259 | 184 tests_passed++; |
185 } | |
186 else | |
187 { | |
363 | 188 if (!ctx->shown && tprint(0, "%s: FAIL\n", ctx->header)) |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
189 ctx->shown = TRUE; |
363 | 190 |
259 | 191 if (fmt != NULL) |
263 | 192 { |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
193 tprint(0, " - "); |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
194 tprintv(0, fmt, ap); |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
195 tprint(0, "\n"); |
263 | 196 } |
259 | 197 tests_failed++; |
529
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
198 |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
199 ctx->failed = TRUE; |
259 | 200 } |
201 } | |
202 | |
203 | |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
204 BOOL test_result_msg(test_ctx *ctx, BOOL check, const char *fmt, ...) |
259 | 205 { |
206 va_list ap; | |
207 va_start(ap, fmt); | |
303 | 208 test_result_msg_v(ctx, check, fmt, ap); |
259 | 209 va_end(ap); |
305
5afd918cbd79
Have a return value for test result functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
304
diff
changeset
|
210 return check; |
259 | 211 } |
212 | |
213 | |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
214 BOOL test_result(test_ctx *ctx, BOOL check) |
259 | 215 { |
303 | 216 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
|
217 return check; |
259 | 218 } |
219 | |
220 | |
319 | 221 void test_snprintf_do(size_t len, const char *msg, const char *fmt, va_list ap) |
259 | 222 { |
223 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
|
224 va_list tmp; |
303 | 225 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
|
226 |
529
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
227 // Setup printf debug value |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
228 th_printf_debug = th_verbosity >= 3; |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
229 th_printf_debug_prefix = " - "; |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
230 |
263 | 231 // Test basic *printf() functionality |
530
94d4130cc29c
Clarify printf test output slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
232 test_start(&ctx, "th_vsnprintf(buflen=%" PRIu_SIZE_T ", \"%s\", %s)", len, fmt, msg); |
259 | 233 |
365 | 234 memset(buf1, SET_SENTINEL_BYTE, SET_BUF_SIZE_2); buf1[SET_BUF_SIZE_2-1] = 0; |
235 memset(buf2, SET_SENTINEL_BYTE, SET_BUF_SIZE_2); buf2[SET_BUF_SIZE_2-1] = 0; | |
254
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
236 |
339
46a0fab6ca1f
Fix snprintf() test running.
Matti Hamalainen <ccr@tnsp.org>
parents:
338
diff
changeset
|
237 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
|
238 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
|
239 |
303 | 240 test_result_msg(&ctx, ret1 == ret2, "retval mismatch %d [th] != %d [libc]", ret1, ret2); |
241 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
|
242 |
365 | 243 if (optFlags & TST_OVERFLOW) |
244 { | |
303 | 245 test_result_msg(&ctx, (unsigned char) buf1[len] == SET_SENTINEL_BYTE, "buffer #1 overflow, sentinel 0x%02x", buf1[len]); |
246 test_result_msg(&ctx, (unsigned char) buf2[len] == SET_SENTINEL_BYTE, "buffer #2 overflow, sentinel 0x%02x", buf2[len]); | |
365 | 247 } |
261 | 248 |
529
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
249 if (ctx.failed && !th_printf_debug && th_verbosity >= 1) |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
250 { |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
251 th_printf_debug = TRUE; |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
252 va_copy(tmp, ap); ret1 = th_vsnprintf(buf1, len, fmt, tmp); |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
253 va_copy(tmp, ap); ret2 = vsnprintf(buf2, len, fmt, tmp); |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
254 } |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
255 |
342
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
256 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
|
257 } |
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
258 |
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
259 |
319 | 260 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
|
261 { |
362 | 262 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
|
263 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
|
264 va_start(ap, fmt); |
365 | 265 |
266 if (optFlags & TST_CORNERCASE) | |
267 { | |
268 va_copy(tmp, ap); test_snprintf_do(0, msg, fmt, tmp); | |
269 va_copy(tmp, ap); test_snprintf_do(1, msg, fmt, tmp); | |
270 va_copy(tmp, ap); test_snprintf_do(2, msg, fmt, tmp); | |
271 va_copy(tmp, ap); test_snprintf_do(16, msg, fmt, tmp); | |
272 } | |
273 | |
319 | 274 va_copy(tmp, ap); test_snprintf_do(SET_BUF_SIZE, msg, fmt, tmp); |
362 | 275 |
276 // Test th_strdup_vprintf() | |
365 | 277 if (optFlags & TST_SUPERFLUOUS) |
278 { | |
279 test_start(&ctx, "th_strdup_vprintf('%s')", fmt); | |
280 va_copy(tmp, ap); | |
281 char *str = th_strdup_vprintf(fmt, tmp); | |
282 test_result_msg(&ctx, str != NULL, "result NULL"); | |
283 th_free(str); | |
284 test_end(&ctx); | |
285 } | |
362 | 286 |
441
2991e6b52d95
Get rid of trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
412
diff
changeset
|
287 va_end(ap); |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
288 tprint(2, |
291 | 289 "-----------------------------------------------------\n"); |
254
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
290 } |
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
291 |
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
292 |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
293 BOOL test_set_start(const char *str) |
264
9b6fd2953d8c
Add test header printing function.
Matti Hamalainen <ccr@tnsp.org>
parents:
263
diff
changeset
|
294 { |
365 | 295 if (sets_enabled[sets_total++]) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
296 { |
365 | 297 sets_nenabled++; |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
298 tprint(1, |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
299 "======================================================\n" |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
300 " Set #%d : %s tests\n" |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
301 "======================================================\n", |
365 | 302 sets_total, str); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
303 |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
304 return TRUE; |
282
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 else |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
307 return FALSE; |
264
9b6fd2953d8c
Add test header printing function.
Matti Hamalainen <ccr@tnsp.org>
parents:
263
diff
changeset
|
308 } |
9b6fd2953d8c
Add test header printing function.
Matti Hamalainen <ccr@tnsp.org>
parents:
263
diff
changeset
|
309 |
9b6fd2953d8c
Add test header printing function.
Matti Hamalainen <ccr@tnsp.org>
parents:
263
diff
changeset
|
310 |
603
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
311 #define TEST_ASSERT(xcond) do { \ |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
312 if (!(xcond)) \ |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
313 { \ |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
314 THERR("Assertion '" # xcond "' failed.\n"); \ |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
315 return -1; \ |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
316 } \ |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
317 } while (0) |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
318 |
524
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
319 #define TEST1(fun) do { \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
320 test_ctx ctx; \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
321 test_start(&ctx, # fun ); \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
322 test_result(&ctx, fun); \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
323 test_end(&ctx); \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
324 } while (0) |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
325 |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
326 #define TEST1A(fmt, fun, fcmp, fres) do { \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
327 test_ctx ctx; \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
328 test_start(&ctx, #fun " " #fcmp " " fmt " (" fmt ")", fres, fun); \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
329 test_result(&ctx, fun fcmp fres ); \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
330 test_end(&ctx); \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
331 } while (0) |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
332 |
263 | 333 #define TEST2(fun, str1, str2, ret) do { \ |
502
ebf89497305a
Remove some unused functionality for simplification.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
334 test_ctx ctx; \ |
303 | 335 test_start(&ctx, # fun "('%s', '%s')", str1, str2); \ |
336 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
|
337 test_end(&ctx); \ |
263 | 338 } while (0) |
339 | |
266 | 340 #define TEST2B(fun, str1, str2, ret) do { \ |
502
ebf89497305a
Remove some unused functionality for simplification.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
341 test_ctx ctx; \ |
303 | 342 test_start(&ctx, # fun "('%s', '%s')", str1, str2); \ |
343 test_result(&ctx, fun (str1, str2) == ret); \ | |
342
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
344 test_end(&ctx); \ |
266 | 345 } while (0) |
346 | |
465 | 347 #define TEST2C(fun, str1, str2, ret) do { \ |
502
ebf89497305a
Remove some unused functionality for simplification.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
348 test_ctx ctx; \ |
465 | 349 test_start(&ctx, # fun "('%s', '%s')", str1, str2); \ |
350 test_result(&ctx, (fun (str1, str2) != NULL) == ret); \ | |
351 test_end(&ctx); \ | |
352 } while (0) | |
353 | |
263 | 354 #define TEST3(fun, str1, str2, len, ret) do { \ |
502
ebf89497305a
Remove some unused functionality for simplification.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
355 test_ctx ctx; \ |
303 | 356 test_start(&ctx, # fun "('%s', '%s', %d)", str1, str2, len); \ |
357 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
|
358 test_end(&ctx); \ |
263 | 359 } while (0) |
360 | |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
361 |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
362 void test_config_values(th_cfgitem_t *cfg) |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
363 { |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
364 th_cfgitem_t *item; |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
365 int nsubtest = 0; |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
366 test_ctx ctx; |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
367 |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
368 test_start(&ctx, "Test configuration value search #%d", ++nsubtest); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
369 test_result(&ctx, (item = th_cfg_find(cfg, "inside_sect", "intval", -1)) != NULL && *item->v.val_int == 112); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
370 test_end(&ctx); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
371 test_start(&ctx, "Test configuration value search #%d", ++nsubtest); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
372 test_result(&ctx, (item = th_cfg_find(cfg, "another_sect", "boolval", -1)) != NULL && *item->v.val_bool); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
373 test_end(&ctx); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
374 test_start(&ctx, "Test configuration value search #%d", ++nsubtest); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
375 test_result(&ctx, th_cfg_find(cfg, "no_match", NULL, -1) == NULL); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
376 test_end(&ctx); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
377 test_start(&ctx, "Test configuration value search #%d", ++nsubtest); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
378 test_result(&ctx, th_cfg_find(cfg, NULL, "no_match", -1) == NULL); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
379 test_end(&ctx); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
380 test_start(&ctx, "Test configuration value search #%d", ++nsubtest); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
381 test_result(&ctx, (item = th_cfg_find(cfg, NULL, "hexval", -1)) != NULL && *item->v.val_uint == 0x11223344); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
382 test_end(&ctx); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
383 test_start(&ctx, "Test configuration value search #%d", ++nsubtest); |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
384 test_result(&ctx, (item = th_cfg_find(cfg, NULL, "a_string_setting", -1)) != NULL && strcmp(*item->v.val_str, "v_str1") == 0); |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
385 test_end(&ctx); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
386 } |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
387 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
388 |
552 | 389 void test_config_free(th_llist_t *node) |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
390 { |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
391 th_free_r(&node->data); |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
392 } |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
393 |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
394 |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
395 void test_ioctx_error(th_ioctx *fh, const int val, const char *msg) |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
396 { |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
397 (void) fh; |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
398 (void) val; |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
399 tprint(0, "IOCTX ERROR: %s", msg); |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
400 } |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
401 |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
402 |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
403 void test_ioctx_msg(th_ioctx *fh, const int val, const char *msg) |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
404 { |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
405 (void) fh; |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
406 (void) val; |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
407 tprint(1, "IOCTX MSG: %s", msg); |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
408 } |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
409 |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
410 |
552 | 411 int test_config_strcmp(const void *v1, const void *v2) |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
412 { |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
413 return strcmp((const char *) v1, (const char *) v2); |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
414 } |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
415 |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
416 |
552 | 417 static const char *test_config_strings[] = |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
418 { |
521
77495c646208
Fix parsing and writing of strings with simple escape sequences in config files.
Matti Hamalainen <ccr@tnsp.org>
parents:
517
diff
changeset
|
419 "zoo", "foo", "b\"ar", |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
420 }; |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
421 |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
422 |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
423 void test_config_read(th_cfgitem_t *cfg, const char *filename) |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
424 { |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
425 int nsubtest; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
426 th_ioctx *fh = NULL; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
427 test_ctx ctx; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
428 th_cfgitem_t *item; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
429 |
517
80185b9901ba
Be more informative about which config file we are trying to read while testing.
Matti Hamalainen <ccr@tnsp.org>
parents:
516
diff
changeset
|
430 tprint(1, "Reading configuration from '%s'.\n", filename); |
80185b9901ba
Be more informative about which config file we are trying to read while testing.
Matti Hamalainen <ccr@tnsp.org>
parents:
516
diff
changeset
|
431 |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
432 // Attempt to read the previously written file |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
433 if (th_io_fopen(&fh, &th_stdio_io_ops, filename, "r") != THERR_OK) |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
434 { |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
435 int err = th_get_error(); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
436 THERR("Could not open configuration file '%s', %d: %s\n", |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
437 filename, err, th_error_str(err)); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
438 goto out; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
439 } |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
440 |
516 | 441 th_io_set_handlers(fh, test_ioctx_error, test_ioctx_msg); |
442 | |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
443 th_cfg_read(fh, cfg); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
444 |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
445 // Test read values against expected values |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
446 test_config_values(cfg); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
447 |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
448 // Additional tests |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
449 item = th_cfg_find(cfg, NULL, "string_list", -1); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
450 test_result(&ctx, item != NULL); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
451 if (item != NULL) |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
452 { |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
453 static const char *nostr = "not to be found"; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
454 th_llist_t **plist = (th_llist_t **) item->v.list; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
455 |
552 | 456 for (nsubtest = 0; nsubtest < (int) NCOUNT(test_config_strings); nsubtest++) |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
457 { |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
458 test_start(&ctx, "Test configuration string list values #%d: '%s'", |
552 | 459 nsubtest + 1, test_config_strings[nsubtest]); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
460 |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
461 test_result(&ctx, |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
462 th_llist_find_func(*plist, |
552 | 463 test_config_strings[nsubtest], test_config_strcmp) != NULL); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
464 test_end(&ctx); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
465 } |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
466 |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
467 test_start(&ctx, "Test configuration string list values #%d: '%s'", |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
468 ++nsubtest, nostr); |
552 | 469 test_result(&ctx, th_llist_find_func(*plist, nostr, test_config_strcmp) == NULL); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
470 test_end(&ctx); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
471 |
552 | 472 th_llist_free_func_node(*plist, test_config_free); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
473 *plist = NULL; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
474 } |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
475 |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
476 out: |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
477 th_io_free(fh); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
478 } |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
479 |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
480 |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
481 void test_config(void) |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
482 { |
513
e412a39e2b7a
Add another test for configuration parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
512
diff
changeset
|
483 static const char *filename = "cfg.temp"; |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
484 test_ctx ctx; |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
485 th_ioctx *fh = NULL; |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
486 th_cfgitem_t *sect1, *sect2, *cfg = NULL, *item; |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
487 char *v_str1 = NULL; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
488 unsigned int v_uint1; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
489 int v_int1; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
490 BOOL v_bool1, v_bool2; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
491 th_llist_t *v_str_list = NULL; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
492 |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
493 // Create v_str_list |
552 | 494 for (size_t n = 0; n < NCOUNT(test_config_strings); n++) |
495 th_llist_append(&v_str_list, th_strdup(test_config_strings[n])); | |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
496 |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
497 // Create the configuration structure |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
498 tprint(2, "Creating configuration structure\n"); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
499 sect1 = NULL; |
509
b506bff0a7ab
Some cleanup work and refactoring on the configuration file parser and writer.
Matti Hamalainen <ccr@tnsp.org>
parents:
508
diff
changeset
|
500 th_cfg_add_comment(§1, "A comment that\nspans multiple\nlines automatically"); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
501 th_cfg_add_string(§1, "a_string_setting", &v_str1, "v_str1"); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
502 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
503 th_cfg_add_comment(§1, "Hex triplet value setting"); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
504 th_cfg_add_hexvalue(§1, "hexval", &v_uint1, 0x11223344); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
505 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
506 th_cfg_add_comment(§1, "A boolean value"); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
507 th_cfg_add_bool(§1, "boolval", &v_bool1, FALSE); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
508 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
509 th_cfg_add_comment(§1, "A string list"); |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
510 th_cfg_add_string_list(§1, "string_list", &v_str_list); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
511 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
512 th_cfg_add_section(&cfg, "general", sect1); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
513 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
514 sect1 = NULL; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
515 th_cfg_add_comment(§1, "Another section"); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
516 th_cfg_add_bool(§1, "boolval", &v_bool2, TRUE); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
517 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
518 sect2 = NULL; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
519 th_cfg_add_comment(§2, "Section inside a section"); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
520 th_cfg_add_int(§2, "intval", &v_int1, 112); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
521 th_cfg_add_section(§1, "inside_sect", sect2); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
522 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
523 th_cfg_add_section(&cfg, "another_sect", sect1); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
524 |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
525 // Test ptr |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
526 test_start(&ctx, "Test configuration string list ptr"); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
527 test_result(&ctx, (item = th_cfg_find(cfg, NULL, "string_list", -1)) != NULL && item->v.list == &v_str_list); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
528 test_end(&ctx); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
529 |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
530 // Test value finding |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
531 test_config_values(cfg); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
532 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
533 // Attempt to write the file |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
534 if (th_io_fopen(&fh, &th_stdio_io_ops, filename, "w") != THERR_OK) |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
535 { |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
536 int err = th_get_error(); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
537 THERR("Could not create configuration to file '%s', %d: %s\n", |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
538 filename, err, th_error_str(err)); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
539 goto out; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
540 } |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
541 |
516 | 542 th_io_set_handlers(fh, test_ioctx_error, test_ioctx_msg); |
543 | |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
544 th_cfg_write(fh, cfg); |
515
d512555bdd0f
Close written test config file before trying to read it.
Matti Hamalainen <ccr@tnsp.org>
parents:
513
diff
changeset
|
545 th_io_free(fh); |
d512555bdd0f
Close written test config file before trying to read it.
Matti Hamalainen <ccr@tnsp.org>
parents:
513
diff
changeset
|
546 fh = NULL; |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
547 |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
548 // Test against written configuration file |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
549 test_config_read(cfg, filename); |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
550 |
513
e412a39e2b7a
Add another test for configuration parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
512
diff
changeset
|
551 // Test against manually edited configuration file |
e412a39e2b7a
Add another test for configuration parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
512
diff
changeset
|
552 test_config_read(cfg, "cfg.test01"); |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
553 |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
554 out: |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
555 // Free the data for v_str_list |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
556 th_io_free(fh); |
552 | 557 th_llist_free_func_node(v_str_list, test_config_free); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
558 v_str_list = NULL; |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
559 } |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
560 |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
561 |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
562 typedef struct |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
563 { |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
564 th_regex_char *str; |
610
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
565 size_t nmatches; |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
566 int flags; |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
567 } test_regex_def; |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
568 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
569 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
570 void test_regex_list(const th_regex_char *pattern, const test_regex_def *list) |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
571 { |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
572 th_regex_ctx *reg = NULL; |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
573 int res; |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
574 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
575 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
576 printf("pattern '%s'\n", pattern); |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
577 if ((res = th_regex_compile(®, pattern)) != THERR_OK) |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
578 { |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
579 THERR("Regex compilation failed: %s\n", |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
580 th_error_str(res)); |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
581 goto out; |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
582 } |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
583 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
584 for (const test_regex_def *def = list; def->str != NULL; def++) |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
585 { |
610
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
586 th_regex_match_node *matches = NULL; |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
587 size_t nmatches; |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
588 |
610
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
589 if ((res = th_regex_match(reg, def->str, &nmatches, &matches, -1, def->flags)) != THERR_OK) |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
590 { |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
591 THERR("Regex match returned error: %s\n", |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
592 th_error_str(res)); |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
593 goto out; |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
594 } |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
595 |
610
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
596 printf(" '%s': matched %" PRIu_SIZE_T " time(s), testresult=%s\n", |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
597 def->str, |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
598 nmatches, |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
599 def->nmatches == nmatches ? "YES" : "NO"); |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
600 |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
601 for (th_regex_match_node *m = matches; |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
602 m != NULL; m = (th_regex_match_node *) m->node.next) |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
603 { |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
604 char *tmp = th_strndup(def->str + m->start, m->len); |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
605 printf(" match [%" PRIu_SIZE_T " ++ %" PRIu_SIZE_T "]: '%s'\n", |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
606 m->start, m->len, tmp); |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
607 th_free(tmp); |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
608 } |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
609 |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
610 th_regex_free_matches(matches); |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
611 } |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
612 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
613 out: |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
614 th_regex_free(reg); |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
615 } |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
616 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
617 |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
618 int main(int argc, char *argv[]) |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
619 { |
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
|
620 size_t i1, i2, i3, i4; |
326
75b22d6f8a71
Simplify and improve integer sprintf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
319
diff
changeset
|
621 char buf[64], buf2[64]; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
622 |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
623 // |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
624 // Initialization |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
625 // |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
626 th_init("th-test", "th-libs unit tests", "0.2", NULL, NULL); |
469
fe5b803ae449
Rename the global variable th_verbosityLevel to th_verbosity.
Matti Hamalainen <ccr@tnsp.org>
parents:
465
diff
changeset
|
627 th_verbosity = 0; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
628 |
603
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
629 TEST_ASSERT(sizeof(char) == sizeof(unsigned char)); |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
630 TEST_ASSERT(sizeof(char) == 1); |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
631 TEST_ASSERT(sizeof(uint16_t) == 2); |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
632 TEST_ASSERT(sizeof(uint32_t) == 4); |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
633 TEST_ASSERT(sizeof(uint64_t) == 8); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
634 |
523 | 635 tests_failed = tests_passed = tests_total = |
636 sets_total = sets_nenabled = 0; | |
637 | |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
638 for (i1 = 0; i1 < SET_MAX_TESTS; i1++) |
365 | 639 sets_enabled[i1] = 1; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
640 |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
641 // |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
642 // Parse command line arguments |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
643 // |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
644 if (!th_args_process(argc, argv, arg_opts, arg_nopts, |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
645 arg_handle_opt, NULL, 0)) |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
646 return 0; |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
647 |
365 | 648 tprint(1, "Enabled test types are 0x%04x.\n", optFlags); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
649 |
525
59b8f15c5334
Add (compile-time enabled via TH_PRINTF_DEBUG define) global variable for
Matti Hamalainen <ccr@tnsp.org>
parents:
524
diff
changeset
|
650 |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
651 // |
405 | 652 // Test series for printf() |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
653 // |
544
619e7fcff486
Add more printf() format tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
654 char *i_fmts[] = { "", "05", "6", ".4", "1.1", "1.0", "8.5", "08.5", "3", "2.1", "3", "1", "18", "018", ".0", "0" }; |
596
4ea7b0e9dcba
Improve string printf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
592
diff
changeset
|
655 char *i_mods[] = { "", "-", "+", "#", " ", }; |
343 | 656 char *i_types[] = { "d", "u", "i", "x", "X", "o", }; |
544
619e7fcff486
Add more printf() format tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
657 |
295 | 658 if (test_set_start("printf() integer")) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
659 { |
526
32245648f0f0
More printf() format specifier tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
660 int i_vals[] = { |
532
ad64c3f7cf64
Adjust printf int formatting test values and format specifiers.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
661 0, -0, 1, -1, 10, -10, 512, -512, -1024, |
ad64c3f7cf64
Adjust printf int formatting test values and format specifiers.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
662 612342, -612342, 0x1fff, 0x8000000, -123456789, |
563
7cb58b683677
Fix integer overflow in the test values of 32bit ints.
Matti Hamalainen <ccr@tnsp.org>
parents:
552
diff
changeset
|
663 2147483647, -2147483648 }; |
315 | 664 |
327
b0f9f806c8c9
Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents:
326
diff
changeset
|
665 for (i1 = 0; i1 < NCOUNT(i_vals); i1++) |
315 | 666 { |
319 | 667 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
|
668 |
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
|
669 for (i4 = 0; i4 < NCOUNT(i_mods); i4++) |
332 | 670 for (i3 = 0; i3 < NCOUNT(i_types); i3++) |
671 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
|
672 { |
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
|
673 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
|
674 test_snprintf(buf, buf2, i_vals[i1]); |
75b22d6f8a71
Simplify and improve integer sprintf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
319
diff
changeset
|
675 } |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
676 } |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
677 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
678 |
331
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
679 if (test_set_start("printf() integer 64bit")) |
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
680 { |
532
ad64c3f7cf64
Adjust printf int formatting test values and format specifiers.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
681 int64_t i_vals64[] = { |
544
619e7fcff486
Add more printf() format tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
682 0, -0, 1, -1, 10, -10, 512, -512, -1024, |
619e7fcff486
Add more printf() format tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
683 612342, -612342, 0x1fff, 0x8000000, -123456789, |
619e7fcff486
Add more printf() format tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
684 4294967295, -2147483648, |
532
ad64c3f7cf64
Adjust printf int formatting test values and format specifiers.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
685 0x3342344341fff, 0x1f8000000, }; |
331
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
686 |
333 | 687 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
|
688 { |
395
bffd3caf2d2c
Rename TH_PRI{u,d,x}* macros to match with standard ISO C99 inttypes.h PRI*.
Matti Hamalainen <ccr@tnsp.org>
parents:
380
diff
changeset
|
689 snprintf(buf, sizeof(buf), "%" PRId64, i_vals64[i1]); |
331
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
690 |
340 | 691 for (i4 = 0; i4 < NCOUNT(i_mods); i4++) |
332 | 692 for (i3 = 0; i3 < NCOUNT(i_types); i3++) |
693 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
|
694 { |
402 | 695 snprintf(buf2, sizeof(buf2), "%%%s%sll%s", i_mods[i4], i_fmts[i2], i_types[i3]); |
333 | 696 test_snprintf(buf, buf2, i_vals64[i1]); |
331
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
697 } |
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
698 } |
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
699 } |
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
700 |
533
ef0d732fabe0
Disable floating point printf implementation tests as the support is not
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
701 #ifdef TH_WIP_FLOAT_SUPPORT |
296
ec8357d02a52
Add floating point tests (which will fail for now).
Matti Hamalainen <ccr@tnsp.org>
parents:
295
diff
changeset
|
702 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
|
703 { |
544
619e7fcff486
Add more printf() format tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
704 double f_vals[] = { 0, 1, 2, 3, 2.02, 612342.234, -2.07, -612342.12, 437692.9876543219, 0x1fff, 0x8000000, 0.15625 }; |
404 | 705 char *f_fmts[] = { "%f", "%1.1f", "%8.5f", "%5f", "%-5f", "", "%-5.2f", "%08.5f" }; |
296
ec8357d02a52
Add floating point tests (which will fail for now).
Matti Hamalainen <ccr@tnsp.org>
parents:
295
diff
changeset
|
706 |
327
b0f9f806c8c9
Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents:
326
diff
changeset
|
707 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
|
708 { |
319 | 709 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
|
710 for (i2 = 0; i2 < NCOUNT(f_fmts); i2++) |
319 | 711 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
|
712 } |
296
ec8357d02a52
Add floating point tests (which will fail for now).
Matti Hamalainen <ccr@tnsp.org>
parents:
295
diff
changeset
|
713 } |
533
ef0d732fabe0
Disable floating point printf implementation tests as the support is not
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
714 #endif |
296
ec8357d02a52
Add floating point tests (which will fail for now).
Matti Hamalainen <ccr@tnsp.org>
parents:
295
diff
changeset
|
715 |
295 | 716 if (test_set_start("printf() string")) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
717 { |
407 | 718 char *s_vals[] = { "", "XYZXYZ", "xxx yyy zzz ppp fff", NULL, "X", "abcde", "dx", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", }; |
596
4ea7b0e9dcba
Improve string printf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
592
diff
changeset
|
719 // char *s_fmts[] = { "%s", "%2s", "%-2s", "%5s", "%-5s", "%16s", "%-16s", "%1s", "%-1s", "% 2s", "%03s", "% -12s", "% 03s", "%-.15s", "%.8s" }; |
4ea7b0e9dcba
Improve string printf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
592
diff
changeset
|
720 char *s_fmts[] = { "", "-" " ", "0", " 0", ".", "-.", }; |
4ea7b0e9dcba
Improve string printf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
592
diff
changeset
|
721 int s_widths[] = { 0, 1, 2, 5, 16, }; |
265 | 722 |
327
b0f9f806c8c9
Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents:
326
diff
changeset
|
723 for (i1 = 0; i1 < NCOUNT(s_vals); i1++) |
596
4ea7b0e9dcba
Improve string printf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
592
diff
changeset
|
724 for (i2 = 0; i2 < NCOUNT(s_fmts); i2++) |
4ea7b0e9dcba
Improve string printf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
592
diff
changeset
|
725 for (i3 = 0; i3 < NCOUNT(s_widths); i3++) |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
726 { |
596
4ea7b0e9dcba
Improve string printf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
592
diff
changeset
|
727 snprintf(buf, sizeof(buf), "%%%s%ds", s_fmts[i2], s_widths[i3]); |
4ea7b0e9dcba
Improve string printf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
592
diff
changeset
|
728 test_snprintf(s_vals[i1], buf, s_vals[i1]); |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
729 } |
288 | 730 } |
731 | |
295 | 732 if (test_set_start("printf() char")) |
288 | 733 { |
319 | 734 const char c_val = 'x'; |
735 const char *c_msg = "x"; | |
352 | 736 char *c_fmts[] = { "a%cBC", "%c", "", "%0c", "%1c", "% c", "%-3c", "%3c", "%.3c", "%-.3c", "%-3.3c", "%.c", "%05c", "%-05c", }; |
328
0146aa9a9524
Simplify char printf tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
327
diff
changeset
|
737 |
0146aa9a9524
Simplify char printf tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
327
diff
changeset
|
738 for (i1 = 0; i1 < NCOUNT(c_fmts); i1++) |
0146aa9a9524
Simplify char printf tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
327
diff
changeset
|
739 test_snprintf(c_msg, c_fmts[i1], c_val); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
740 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
741 |
356
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
742 if (test_set_start("printf() pointers")) |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
743 { |
407 | 744 char *p_fmts[] = { "%p", "%2p", "%.2p", "%03p", "%04p", "%-3p", "%0.3p", "%8p", "%32p", "%032p", "%-32p", "%-032p", "%16.8p", "%016.8p" }; |
356
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
745 void *p_vals[] = { NULL, (void *) 1, &p_fmts, }; |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
746 |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
747 for (i1 = 0; i1 < NCOUNT(p_vals); i1++) |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
748 { |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
749 snprintf(buf, sizeof(buf), "%p", p_vals[i1]); |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
750 for (i2 = 0; i2 < NCOUNT(p_fmts); i2++) |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
751 test_snprintf(buf, p_fmts[i2], p_vals[i1]); |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
752 } |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
753 } |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
754 |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
755 // |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
756 // String matching functions |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
757 // |
465 | 758 if (test_set_start("String compare #1")) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
759 { |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
760 TEST2(th_strcasecmp, "aSdFq", "asdfq", TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
761 TEST2(th_strcasecmp, "aSdFq", "asFfq", FALSE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
762 TEST2(th_strcasecmp, "abcde", "abcde", TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
763 TEST2(th_strcasecmp, "öäå", "öäå", TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
764 TEST2(th_strcasecmp, "aöäå", "aöäå", TRUE); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
765 } |
255 | 766 |
465 | 767 if (test_set_start("String compare #2")) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
768 { |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
769 TEST3(th_strncasecmp, "aSdFq", "asFfqB", 4, FALSE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
770 TEST3(th_strncasecmp, "aSdFq", "asFfqQ", 2, TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
771 TEST3(th_strncasecmp, "aSdFq", "asDfq", 3, TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
772 TEST3(th_strncasecmp, "aSdFq", "asDfq", 2, TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
773 TEST3(th_strncasecmp, "aSdFq", "asDfq", 0, TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
774 TEST3(th_strncasecmp, "aSdFq", "QsDfq", 0, TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
775 TEST3(th_strncasecmp, "aSdFq", "QsDfq", 1, FALSE); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
776 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
777 |
465 | 778 if (test_set_start("String compare #3")) |
779 { | |
780 TEST2C(th_strrcasecmp, "foo aSdFq", " asdfq", TRUE); | |
781 TEST2C(th_strrcasecmp, "aSdFq", " asdfq", FALSE); | |
782 TEST2C(th_strrcasecmp, "foo aSdFq baz", "asdfq", FALSE); | |
783 } | |
784 | |
785 if (test_set_start("String matching #1")) | |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
786 { |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
787 TEST2B(th_strmatch, "abba ABBAkukka lol", "*lol", TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
788 TEST2B(th_strmatch, "abba ABBAkukka lol", "*lo*", TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
789 TEST2B(th_strmatch, "abba ABBAkukka lol", "*lo", FALSE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
790 TEST2B(th_strmatch, "abba ABBAkukka lol", "abba", FALSE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
791 TEST2B(th_strmatch, "abba ABBAkukka lol", "*bba*", TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
792 TEST2B(th_strmatch, "abba ABBAkukka lol", "abba*", TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
793 TEST2B(th_strmatch, "abba ABBAkukka lol", "abbak*", FALSE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
794 TEST2B(th_strmatch, "abba ABBAöökukka lol", "*abbaö?", FALSE); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
795 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
796 |
465 | 797 if (test_set_start("String matching #2")) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
798 { |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
799 TEST2B(th_strcasematch, "abba ABBAkukka lol", "abbak*", FALSE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
800 TEST2B(th_strcasematch, "abba ABBAkukka lol", "*abbak*", TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
801 TEST2B(th_strcasematch, "abba ABBAkukka lol", "*ab?ak*", TRUE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
802 TEST2B(th_strcasematch, "abba ABBAkukka lol", "*abbak?", FALSE); |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
803 TEST2B(th_strcasematch, "abba ABBAkukka lol", "?bba?abba*", TRUE); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
804 } |
266 | 805 |
265 | 806 // Tests that test for things that do not work correctly yet |
807 // Unicode / multibyte UTF-8 causes problems here | |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
808 if ((optFlags & TST_BROKEN) && |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
809 test_set_start("Invalid UTF-8 handling")) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
810 { |
457
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
811 TEST2(th_strcasecmp, "ÖÄÅ", "öäå", FALSE); // SHOULD match |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
812 TEST3(th_strncasecmp, "Aäöå", "aöå", 2, TRUE); // should NOT match |
85fa3d333556
Actually, revert the boolean changes .. meh.
Matti Hamalainen <ccr@tnsp.org>
parents:
453
diff
changeset
|
813 TEST2B(th_strmatch, "öriÖRI! lol", "?ri?RI!*", FALSE); // should match |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
814 } |
266 | 815 |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
816 // |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
817 // printf() PRI* format specifiers, also a compile time test |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
818 // |
501 | 819 if (test_set_start("PRI* specifiers")) |
492
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
820 { |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
821 char tmp[32]; |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
822 uint32_t u32 = 0xaabbccdd; |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
823 uint64_t u64 = 0xaabbccdd11223344; |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
824 size_t usiz = |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
825 #if TH_ARCH == 32 |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
826 0x11223344; |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
827 #elif TH_ARCH == 64 |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
828 0xaabbccdd11223344; |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
829 #else |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
830 #error Unsupported TH_ARCH value. |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
831 #endif |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
832 |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
833 snprintf(tmp, sizeof(tmp), "%16" PRIx_SIZE_T "h", usiz); |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
834 #if TH_ARCH == 32 |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
835 TEST2(strcmp, tmp, "0000000011223344h", TRUE); |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
836 #else |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
837 TEST2(strcmp, tmp, "aabbccdd11223344h", TRUE); |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
838 #endif |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
839 |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
840 snprintf(tmp, sizeof(tmp), "%08" PRIx32 "h", u32); |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
841 TEST2(strcmp, tmp, "aabbccddh", TRUE); |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
842 snprintf(tmp, sizeof(tmp), "%16" PRIx64 "h", u64); |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
843 TEST2(strcmp, tmp, "aabbccdd11223344h", TRUE); |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
844 } |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
845 |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
846 // |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
847 // Configuration file handling |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
848 // |
523 | 849 if (test_set_start("Configuration file handling")) |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
850 { |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
851 test_config(); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
852 } |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
853 |
255 | 854 // |
524
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
855 // String functions |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
856 // |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
857 if (test_set_start("String functions")) |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
858 { |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
859 unsigned int tmpUint; |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
860 |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
861 TEST1(th_get_hex_triplet("0fac11", &tmpUint) == TRUE); |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
862 TEST1A("0x%06x", tmpUint, ==, 0x0fac11); |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
863 TEST1(th_get_hex_triplet("120fac11", &tmpUint) == TRUE); |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
864 TEST1A("0x%06x", tmpUint, ==, 0x120fac11); |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
865 TEST1(th_get_hex_triplet("x120fac11", &tmpUint) == FALSE); |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
866 } |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
867 |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
868 // |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
869 // Regular expressions |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
870 // |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
871 if (test_set_start("Regular expressions")) |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
872 { |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
873 th_regex_ctx *reg = NULL; |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
874 int res; |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
875 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
876 res = th_regex_compile(®, "z*k+abba fabboa? k{4} [gz]{1,2} foo(bar|zoo)?"); |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
877 if (res != THERR_OK) |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
878 printf("result: %s\n", th_error_str(res)); |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
879 th_regex_free(reg); |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
880 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
881 test_regex_def tst1[] = |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
882 { |
610
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
883 { "abcfoabccg" , 1, 0 }, |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
884 { "abcbcfoabccg" , 1, 0 }, |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
885 { "abcbcfoabccgabcbcfoabccg" , 2, 0 }, |
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
886 { NULL, 0, 0 } |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
887 }; |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
888 |
610
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
889 test_regex_list("a(bc){1,2}fo[oab]*cc?g", tst1); |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
890 } |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
891 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
892 // |
255 | 893 // Print summary and exit |
894 // | |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
895 tprint(1, |
276
56b0de9f9d44
Improve tests output per verbosity level.
Matti Hamalainen <ccr@tnsp.org>
parents:
274
diff
changeset
|
896 "======================================================\n"); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
897 |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
898 tprint(0, |
312 | 899 "%d tests failed, %d passed (%d main tests), %d test sets of %d sets total.\n\n", |
365 | 900 tests_failed, tests_passed, tests_total, sets_nenabled, sets_total); |
255 | 901 |
254
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
902 return 0; |
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
903 } |