Mercurial > hg > th-libs
annotate tests.c @ 764:0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 09 Feb 2023 23:59:00 +0200 |
parents | 1cb9454ec569 |
children | 600a3c08747f |
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" |
651 | 6 #include "th_ioctx.h" |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
7 #include "th_config.h" |
743
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
8 #include "th_file.h" |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
9 #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
|
10 |
364 | 11 |
12 #define SET_BUF_SIZE 128 | |
365 | 13 #define SET_BUF_SIZE_2 ((SET_BUF_SIZE) + 32) |
364 | 14 #define SET_MAX_TESTS 64 |
15 #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
|
16 |
291 | 17 |
552 | 18 #define NCOUNT(xxx) (sizeof(xxx) / sizeof(xxx[0])) |
19 | |
20 | |
365 | 21 enum |
22 { | |
23 TST_SUPERFLUOUS = 0x0001, | |
24 TST_CORNERCASE = 0x0002, | |
25 TST_OVERFLOW = 0x0004, | |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
26 TST_BROKEN = 0x1000, |
365 | 27 TST_ALL = 0xffff, |
28 }; | |
29 | |
30 | |
303 | 31 typedef struct |
32 { | |
502
ebf89497305a
Remove some unused functionality for simplification.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
33 char *header; |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
34 bool |
551 | 35 shown, // Has test result value been shown? |
36 failed; // Did the test fail? (used by some tests to show extra info) | |
303 | 37 } test_ctx; |
38 | |
39 | |
551 | 40 // Global variables |
41 int tests_failed, // Total number of tests failed | |
42 tests_passed, // Total number of tests passed | |
43 tests_total, // Total number of tests RUN | |
44 sets_total, // Number of test sets | |
45 sets_nenabled; // Number of test sets enabled | |
46 | |
365 | 47 int sets_enabled[SET_MAX_TESTS]; |
259 | 48 |
551 | 49 char buf1[SET_BUF_SIZE_2], |
50 buf2[SET_BUF_SIZE_2]; | |
51 | |
365 | 52 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
|
53 |
651 | 54 th_ioctx testio; |
55 | |
254
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
56 |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
57 // Define option arguments |
380
ac10155d2b4a
Rename th_optarg_t to t_optarg. API break.
Matti Hamalainen <ccr@tnsp.org>
parents:
366
diff
changeset
|
58 static const th_optarg arg_opts[] = |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
59 { |
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
|
60 { 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
|
61 { 1, 'v', "verbose" , NULL, "Be more verbose", OPT_NONE }, |
602 | 62 { 2, 's', "sets" , "sets", "Perform test sets -s <set>[,<set2>..]", OPT_ARGREQ }, |
63 { 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
|
64 }; |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
65 |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
66 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
|
67 |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
68 |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
69 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
|
70 { |
469
fe5b803ae449
Rename the global variable th_verbosityLevel to th_verbosity.
Matti Hamalainen <ccr@tnsp.org>
parents:
465
diff
changeset
|
71 if (level <= th_verbosity) |
363 | 72 { |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
73 vfprintf(stdout, fmt, ap); |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
74 return true; |
363 | 75 } |
76 else | |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
77 return false; |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
78 } |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
79 |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
80 |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
81 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
|
82 { |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
83 bool retv; |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
84 va_list ap; |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
85 va_start(ap, fmt); |
363 | 86 retv = tprintv(level, fmt, ap); |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
87 va_end(ap); |
363 | 88 return retv; |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
89 } |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
90 |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
91 |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
92 void arg_show_help(void) |
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 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
|
95 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
|
96 } |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
97 |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
98 |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
99 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
|
100 { |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
101 switch (optN) |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
102 { |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
103 case 0: |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
104 arg_show_help(); |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
105 exit(0); |
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 |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
108 case 1: |
469
fe5b803ae449
Rename the global variable th_verbosityLevel to th_verbosity.
Matti Hamalainen <ccr@tnsp.org>
parents:
465
diff
changeset
|
109 th_verbosity++; |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
110 break; |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
111 |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
112 case 2: |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
113 { |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
114 bool ret = true; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
115 char *pos, *pstr, *next; |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
116 pos = pstr = th_strdup(optArg); |
365 | 117 memset(sets_enabled, 0, sizeof(sets_enabled)); |
282
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 do { |
552 | 120 if ((next = strchr(pos, ',')) != NULL) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
121 *next = 0; |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
122 |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
123 char *tmp = th_strdup_trim(pos, TH_TRIM_BOTH); |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
124 if (tmp != NULL) |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
125 { |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
126 int val = atoi(tmp); |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
127 if (val > 0 && val <= SET_MAX_TESTS) |
365 | 128 sets_enabled[val - 1] = 1; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
129 else |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
130 { |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
131 THERR("Invalid test number #%d, out of range [%d .. %d]\n", val, 1, SET_MAX_TESTS); |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
132 ret = false; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
133 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
134 th_free(tmp); |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
135 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
136 |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
137 if (next != NULL) |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
138 pos = next + 1; |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
139 } while (next != NULL); |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
140 th_free(pstr); |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
141 return ret; |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
142 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
143 break; |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
144 |
365 | 145 case 3: |
366
21bbb2dc4fac
Actually parse the -t option argument.
Matti Hamalainen <ccr@tnsp.org>
parents:
365
diff
changeset
|
146 optFlags = atoi(optArg); |
365 | 147 break; |
148 | |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
149 default: |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
150 THERR("Unknown option '%s'.\n", currArg); |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
151 return false; |
274
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 |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
154 return true; |
274
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
155 } |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
156 |
f875db8634b6
Implement commandline options for test driver.
Matti Hamalainen <ccr@tnsp.org>
parents:
272
diff
changeset
|
157 |
342
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
158 void test_end(test_ctx *ctx) |
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
159 { |
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
160 th_free_r(&ctx->header); |
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
161 } |
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
162 |
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
163 |
303 | 164 void test_start_v(test_ctx *ctx, const char *fmt, va_list ap) |
259 | 165 { |
166 tests_total++; | |
502
ebf89497305a
Remove some unused functionality for simplification.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
167 memset(ctx, 0, sizeof(test_ctx)); |
303 | 168 ctx->header = th_strdup_vprintf(fmt, ap); |
259 | 169 } |
170 | |
171 | |
303 | 172 void test_start(test_ctx *ctx, const char *fmt, ...) |
259 | 173 { |
174 va_list ap; | |
175 va_start(ap, fmt); | |
303 | 176 test_start_v(ctx, fmt, ap); |
259 | 177 va_end(ap); |
178 } | |
179 | |
180 | |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
181 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
|
182 { |
259 | 183 if (check) |
184 { | |
363 | 185 if (!ctx->shown && tprint(2, "%s: OK\n", ctx->header)) |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
186 ctx->shown = true; |
363 | 187 |
259 | 188 tests_passed++; |
189 } | |
190 else | |
191 { | |
363 | 192 if (!ctx->shown && tprint(0, "%s: FAIL\n", ctx->header)) |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
193 ctx->shown = true; |
363 | 194 |
259 | 195 if (fmt != NULL) |
263 | 196 { |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
197 tprint(0, " - "); |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
198 tprintv(0, fmt, ap); |
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
199 tprint(0, "\n"); |
263 | 200 } |
259 | 201 tests_failed++; |
529
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
202 |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
203 ctx->failed = true; |
259 | 204 } |
205 } | |
206 | |
207 | |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
208 bool test_result_msg(test_ctx *ctx, bool check, const char *fmt, ...) |
259 | 209 { |
210 va_list ap; | |
211 va_start(ap, fmt); | |
303 | 212 test_result_msg_v(ctx, check, fmt, ap); |
259 | 213 va_end(ap); |
305
5afd918cbd79
Have a return value for test result functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
304
diff
changeset
|
214 return check; |
259 | 215 } |
216 | |
217 | |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
218 bool test_result(test_ctx *ctx, bool check) |
259 | 219 { |
303 | 220 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
|
221 return check; |
259 | 222 } |
223 | |
224 | |
319 | 225 void test_snprintf_do(size_t len, const char *msg, const char *fmt, va_list ap) |
259 | 226 { |
227 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
|
228 va_list tmp; |
303 | 229 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
|
230 |
529
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
231 // Setup printf debug value |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
232 th_printf_debug = th_verbosity >= 3; |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
233 th_printf_debug_prefix = " - "; |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
234 |
263 | 235 // Test basic *printf() functionality |
530
94d4130cc29c
Clarify printf test output slightly.
Matti Hamalainen <ccr@tnsp.org>
parents:
529
diff
changeset
|
236 test_start(&ctx, "th_vsnprintf(buflen=%" PRIu_SIZE_T ", \"%s\", %s)", len, fmt, msg); |
259 | 237 |
365 | 238 memset(buf1, SET_SENTINEL_BYTE, SET_BUF_SIZE_2); buf1[SET_BUF_SIZE_2-1] = 0; |
239 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
|
240 |
339
46a0fab6ca1f
Fix snprintf() test running.
Matti Hamalainen <ccr@tnsp.org>
parents:
338
diff
changeset
|
241 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
|
242 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
|
243 |
303 | 244 test_result_msg(&ctx, ret1 == ret2, "retval mismatch %d [th] != %d [libc]", ret1, ret2); |
245 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
|
246 |
365 | 247 if (optFlags & TST_OVERFLOW) |
248 { | |
303 | 249 test_result_msg(&ctx, (unsigned char) buf1[len] == SET_SENTINEL_BYTE, "buffer #1 overflow, sentinel 0x%02x", buf1[len]); |
250 test_result_msg(&ctx, (unsigned char) buf2[len] == SET_SENTINEL_BYTE, "buffer #2 overflow, sentinel 0x%02x", buf2[len]); | |
365 | 251 } |
261 | 252 |
529
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
253 if (ctx.failed && !th_printf_debug && th_verbosity >= 1) |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
254 { |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
255 th_printf_debug = true; |
529
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
256 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
|
257 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
|
258 } |
c44ebf5b08fd
Improve printf debugging in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
527
diff
changeset
|
259 |
342
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
260 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
|
261 } |
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
262 |
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
263 |
319 | 264 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
|
265 { |
362 | 266 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
|
267 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
|
268 va_start(ap, fmt); |
365 | 269 |
270 if (optFlags & TST_CORNERCASE) | |
271 { | |
272 va_copy(tmp, ap); test_snprintf_do(0, msg, fmt, tmp); | |
273 va_copy(tmp, ap); test_snprintf_do(1, msg, fmt, tmp); | |
274 va_copy(tmp, ap); test_snprintf_do(2, msg, fmt, tmp); | |
275 va_copy(tmp, ap); test_snprintf_do(16, msg, fmt, tmp); | |
276 } | |
277 | |
319 | 278 va_copy(tmp, ap); test_snprintf_do(SET_BUF_SIZE, msg, fmt, tmp); |
362 | 279 |
280 // Test th_strdup_vprintf() | |
365 | 281 if (optFlags & TST_SUPERFLUOUS) |
282 { | |
283 test_start(&ctx, "th_strdup_vprintf('%s')", fmt); | |
284 va_copy(tmp, ap); | |
285 char *str = th_strdup_vprintf(fmt, tmp); | |
286 test_result_msg(&ctx, str != NULL, "result NULL"); | |
287 th_free(str); | |
288 test_end(&ctx); | |
289 } | |
362 | 290 |
441
2991e6b52d95
Get rid of trailing whitespace.
Matti Hamalainen <ccr@tnsp.org>
parents:
412
diff
changeset
|
291 va_end(ap); |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
292 tprint(2, |
291 | 293 "-----------------------------------------------------\n"); |
254
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
294 } |
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
295 |
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
296 |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
297 bool test_set_start(const char *str) |
264
9b6fd2953d8c
Add test header printing function.
Matti Hamalainen <ccr@tnsp.org>
parents:
263
diff
changeset
|
298 { |
365 | 299 if (sets_enabled[sets_total++]) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
300 { |
365 | 301 sets_nenabled++; |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
302 tprint(1, |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
303 "======================================================\n" |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
304 " Set #%d : %s tests\n" |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
305 "======================================================\n", |
365 | 306 sets_total, str); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
307 |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
308 return true; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
309 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
310 else |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
311 return false; |
264
9b6fd2953d8c
Add test header printing function.
Matti Hamalainen <ccr@tnsp.org>
parents:
263
diff
changeset
|
312 } |
9b6fd2953d8c
Add test header printing function.
Matti Hamalainen <ccr@tnsp.org>
parents:
263
diff
changeset
|
313 |
9b6fd2953d8c
Add test header printing function.
Matti Hamalainen <ccr@tnsp.org>
parents:
263
diff
changeset
|
314 |
603
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
315 #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
|
316 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
|
317 { \ |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
318 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
|
319 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
|
320 } \ |
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
321 } 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
|
322 |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
323 #define TEST_1A(fun) do { \ |
524
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
324 test_ctx ctx; \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
325 test_start(&ctx, # fun ); \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
326 test_result(&ctx, fun); \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
327 test_end(&ctx); \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
328 } while (0) |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
329 |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
330 #define TEST_1B(fmt, fun, fcmp, fres) do { \ |
524
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
331 test_ctx ctx; \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
332 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
|
333 test_result(&ctx, fun fcmp fres ); \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
334 test_end(&ctx); \ |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
335 } while (0) |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
336 |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
337 #define TEST_2A(fun, str1, str2, ret) do { \ |
502
ebf89497305a
Remove some unused functionality for simplification.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
338 test_ctx ctx; \ |
303 | 339 test_start(&ctx, # fun "('%s', '%s')", str1, str2); \ |
340 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
|
341 test_end(&ctx); \ |
263 | 342 } while (0) |
343 | |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
344 #define TEST_2B(fun, str1, str2, ret) do { \ |
502
ebf89497305a
Remove some unused functionality for simplification.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
345 test_ctx ctx; \ |
303 | 346 test_start(&ctx, # fun "('%s', '%s')", str1, str2); \ |
347 test_result(&ctx, fun (str1, str2) == ret); \ | |
342
09c2f6abf694
Fix memory leaks in test suite.
Matti Hamalainen <ccr@tnsp.org>
parents:
340
diff
changeset
|
348 test_end(&ctx); \ |
266 | 349 } while (0) |
350 | |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
351 #define TEST_2C(fun, str1, str2, ret) do { \ |
502
ebf89497305a
Remove some unused functionality for simplification.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
352 test_ctx ctx; \ |
465 | 353 test_start(&ctx, # fun "('%s', '%s')", str1, str2); \ |
354 test_result(&ctx, (fun (str1, str2) != NULL) == ret); \ | |
355 test_end(&ctx); \ | |
356 } while (0) | |
357 | |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
358 #define TEST_3A(fun, str1, str2, len, ret) do { \ |
502
ebf89497305a
Remove some unused functionality for simplification.
Matti Hamalainen <ccr@tnsp.org>
parents:
501
diff
changeset
|
359 test_ctx ctx; \ |
303 | 360 test_start(&ctx, # fun "('%s', '%s', %d)", str1, str2, len); \ |
361 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
|
362 test_end(&ctx); \ |
263 | 363 } while (0) |
364 | |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
365 #define TEST_3B(fun, str1, str2, sbool, ret) do { \ |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
366 test_ctx ctx; \ |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
367 test_start(&ctx, # fun "('%s', '%s', %s)", str1, str2, sbool ? "true" : "false"); \ |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
368 test_result(&ctx, fun (str1, str2, sbool) == ret); \ |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
369 test_end(&ctx); \ |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
370 } while (0) |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
371 |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
372 |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
373 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
|
374 { |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
375 th_cfgitem_t *item; |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
376 int nsubtest = 0; |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
377 test_ctx ctx; |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
378 |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
379 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
|
380 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
|
381 test_end(&ctx); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
382 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
|
383 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
|
384 test_end(&ctx); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
385 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
|
386 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
|
387 test_end(&ctx); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
388 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
|
389 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
|
390 test_end(&ctx); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
391 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
|
392 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
|
393 test_end(&ctx); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
394 test_start(&ctx, "Test configuration value search #%d", ++nsubtest); |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
395 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
|
396 test_end(&ctx); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
397 } |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
398 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
399 |
709
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
400 void test_config_free(th_cfgitem_t *node) |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
401 { |
709
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
402 switch (node->type) |
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
403 { |
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
404 case ITEM_STRING: |
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
405 th_free(*(node->v.val_str)); |
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
406 break; |
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
407 |
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
408 case ITEM_STRING_LIST: |
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
409 break; |
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
410 } |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
411 } |
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 |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
414 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
|
415 { |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
416 (void) fh; |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
417 (void) val; |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
418 tprint(0, "IOCTX ERROR: %s", msg); |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
419 } |
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 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
|
423 { |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
424 (void) fh; |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
425 (void) val; |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
426 tprint(1, "IOCTX MSG: %s", msg); |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
427 } |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
428 |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
429 |
552 | 430 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
|
431 { |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
432 return strcmp((const char *) v1, (const char *) v2); |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
433 } |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
434 |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
435 |
552 | 436 static const char *test_config_strings[] = |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
437 { |
521
77495c646208
Fix parsing and writing of strings with simple escape sequences in config files.
Matti Hamalainen <ccr@tnsp.org>
parents:
517
diff
changeset
|
438 "zoo", "foo", "b\"ar", |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
439 }; |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
440 |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
441 |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
442 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
|
443 { |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
444 int nsubtest; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
445 th_ioctx *fh = NULL; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
446 test_ctx ctx; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
447 th_cfgitem_t *item; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
448 |
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
|
449 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
|
450 |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
451 // Attempt to read the previously written file |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
452 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
|
453 { |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
454 int err = th_get_error(); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
455 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
|
456 filename, err, th_error_str(err)); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
457 goto out; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
458 } |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
459 |
516 | 460 th_io_set_handlers(fh, test_ioctx_error, test_ioctx_msg); |
461 | |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
462 th_cfg_read(fh, cfg); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
463 |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
464 // Test read values against expected values |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
465 test_config_values(cfg); |
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 // Additional tests |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
468 item = th_cfg_find(cfg, NULL, "string_list", -1); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
469 test_result(&ctx, item != NULL); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
470 if (item != NULL) |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
471 { |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
472 static const char *nostr = "not to be found"; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
473 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
|
474 |
552 | 475 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
|
476 { |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
477 test_start(&ctx, "Test configuration string list values #%d: '%s'", |
552 | 478 nsubtest + 1, test_config_strings[nsubtest]); |
512
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 test_result(&ctx, |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
481 th_llist_find_func(*plist, |
552 | 482 test_config_strings[nsubtest], test_config_strcmp) != NULL); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
483 test_end(&ctx); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
484 } |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
485 |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
486 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
|
487 ++nsubtest, nostr); |
552 | 488 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
|
489 test_end(&ctx); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
490 |
709
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
491 th_llist_free_func_data(*plist, th_free); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
492 *plist = NULL; |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
493 } |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
494 |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
495 out: |
650
24cbab6e88c6
Remove th_io_free(), merge the functionality to th_io_close(). Add flags
Matti Hamalainen <ccr@tnsp.org>
parents:
649
diff
changeset
|
496 th_io_close(fh); |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
497 } |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
498 |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
499 |
760
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
500 void test_config_file(void) |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
501 { |
513
e412a39e2b7a
Add another test for configuration parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
512
diff
changeset
|
502 static const char *filename = "cfg.temp"; |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
503 test_ctx ctx; |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
504 th_ioctx *fh = NULL; |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
505 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
|
506 char *v_str1 = NULL; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
507 unsigned int v_uint1; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
508 int v_int1; |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
509 bool v_bool1, v_bool2; |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
510 th_llist_t *v_str_list = NULL; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
511 |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
512 // Create v_str_list |
552 | 513 for (size_t n = 0; n < NCOUNT(test_config_strings); n++) |
514 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
|
515 |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
516 // Create the configuration structure |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
517 tprint(2, "Creating configuration structure\n"); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
518 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
|
519 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
|
520 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
|
521 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
522 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
|
523 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
|
524 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
525 th_cfg_add_comment(§1, "A boolean value"); |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
526 th_cfg_add_bool(§1, "boolval", &v_bool1, false); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
527 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
528 th_cfg_add_comment(§1, "A string list"); |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
529 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
|
530 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
531 th_cfg_add_section(&cfg, "general", sect1); |
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 sect1 = NULL; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
534 th_cfg_add_comment(§1, "Another section"); |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
535 th_cfg_add_bool(§1, "boolval", &v_bool2, true); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
536 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
537 sect2 = NULL; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
538 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
|
539 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
|
540 th_cfg_add_section(§1, "inside_sect", sect2); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
541 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
542 th_cfg_add_section(&cfg, "another_sect", sect1); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
543 |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
544 // Test ptr |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
545 test_start(&ctx, "Test configuration string list ptr"); |
613 | 546 test_result(&ctx, |
547 (item = th_cfg_find(cfg, NULL, "string_list", -1)) != NULL && | |
548 item->v.list == &v_str_list); | |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
549 test_end(&ctx); |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
550 |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
551 // Test value finding |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
552 test_config_values(cfg); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
553 |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
554 // Attempt to write the file |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
555 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
|
556 { |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
557 int err = th_get_error(); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
558 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
|
559 filename, err, th_error_str(err)); |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
560 goto out; |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
561 } |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
562 |
516 | 563 th_io_set_handlers(fh, test_ioctx_error, test_ioctx_msg); |
564 | |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
565 th_cfg_write(fh, cfg); |
650
24cbab6e88c6
Remove th_io_free(), merge the functionality to th_io_close(). Add flags
Matti Hamalainen <ccr@tnsp.org>
parents:
649
diff
changeset
|
566 th_io_close(fh); |
515
d512555bdd0f
Close written test config file before trying to read it.
Matti Hamalainen <ccr@tnsp.org>
parents:
513
diff
changeset
|
567 fh = NULL; |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
568 |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
569 // Test against written configuration file |
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
570 test_config_read(cfg, filename); |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
571 |
513
e412a39e2b7a
Add another test for configuration parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
512
diff
changeset
|
572 // Test against manually edited configuration file |
e412a39e2b7a
Add another test for configuration parsing.
Matti Hamalainen <ccr@tnsp.org>
parents:
512
diff
changeset
|
573 test_config_read(cfg, "cfg.test01"); |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
574 |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
575 out: |
512
5c3bfe034915
Improve config file handling tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
509
diff
changeset
|
576 // Free the data for v_str_list |
650
24cbab6e88c6
Remove th_io_free(), merge the functionality to th_io_close(). Add flags
Matti Hamalainen <ccr@tnsp.org>
parents:
649
diff
changeset
|
577 th_io_close(fh); |
709
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
578 th_llist_free_func_data(v_str_list, th_free); |
905d30063e45
Use the th_cfg_free() deallocator.
Matti Hamalainen <ccr@tnsp.org>
parents:
703
diff
changeset
|
579 th_cfg_free(cfg, test_config_free); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
580 } |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
581 |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
582 |
760
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
583 bool test_linked_list_length(th_llist_t *list, const size_t n) |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
584 { |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
585 test_ctx ctx; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
586 bool ok = th_llist_length(list) == n; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
587 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
588 test_start(&ctx, "Test list length matching"); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
589 test_result(&ctx, ok); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
590 test_end(&ctx); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
591 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
592 return ok; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
593 } |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
594 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
595 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
596 bool test_linked_list_validity(th_llist_t *list, const size_t nstart, const ssize_t ndelta) |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
597 { |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
598 test_ctx ctx; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
599 th_llist_t *node; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
600 size_t n; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
601 bool ok = true; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
602 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
603 for (n = nstart, node = list; node != NULL; node = node->next, n += ndelta) |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
604 { |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
605 if ((size_t) node->data != n) |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
606 { |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
607 ok = false; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
608 break; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
609 } |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
610 } |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
611 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
612 test_start(&ctx, "Test list data contents"); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
613 test_result_msg(&ctx, ok, "failure at index #%d", n); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
614 test_end(&ctx); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
615 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
616 return ok; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
617 } |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
618 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
619 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
620 int test_llist_sortfunc(const th_llist_t *lnode, const th_llist_t *rnode, void *userdata) |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
621 { |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
622 (void) userdata; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
623 return lnode->data <= rnode->data; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
624 } |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
625 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
626 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
627 void test_linked_lists(void) |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
628 { |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
629 th_llist_t *list = NULL, *node; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
630 size_t nnodes = 128, n; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
631 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
632 tprint(2, "Creating linked list\n"); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
633 for (n = 0; n < nnodes; n++) |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
634 { |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
635 if ((node = th_llist_append(&list, (void *) n)) == NULL) |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
636 { |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
637 THERR("Error allocating memory.\n"); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
638 goto out; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
639 } |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
640 } |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
641 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
642 // Test |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
643 test_linked_list_length(list, nnodes); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
644 test_linked_list_validity(list, 0, 1); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
645 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
646 // Reverse |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
647 th_llist_reverse(&list); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
648 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
649 test_linked_list_length(list, nnodes); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
650 test_linked_list_validity(list, nnodes - 1, -1); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
651 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
652 // Sort |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
653 th_llist_mergesort(&list, test_llist_sortfunc, NULL); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
654 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
655 // Test count |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
656 test_linked_list_length(list, nnodes); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
657 test_linked_list_validity(list, 0, 1); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
658 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
659 // Prepend |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
660 tprint(2, "Prepend node to list\n"); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
661 for (size_t k = 0; k < 16; k++) |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
662 { |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
663 if ((node = th_llist_prepend(&list, (void *) n)) == NULL) |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
664 { |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
665 THERR("Error allocating memory.\n"); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
666 goto out; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
667 } |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
668 nnodes++; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
669 n++; |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
670 } |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
671 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
672 // Test count |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
673 test_linked_list_length(list, nnodes); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
674 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
675 // Sort |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
676 th_llist_mergesort(&list, test_llist_sortfunc, NULL); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
677 test_linked_list_validity(list, 0, 1); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
678 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
679 // Delete |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
680 th_llist_delete_node(&list, list); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
681 test_linked_list_length(list, nnodes - 1); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
682 test_linked_list_validity(list, 1, 1); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
683 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
684 out: |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
685 th_llist_free(list); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
686 } |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
687 |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
688 |
614
afcaf5e38f56
Disable regex stuff from normal builds.
Matti Hamalainen <ccr@tnsp.org>
parents:
613
diff
changeset
|
689 #ifdef TH_EXPERIMENTAL_REGEX |
afcaf5e38f56
Disable regex stuff from normal builds.
Matti Hamalainen <ccr@tnsp.org>
parents:
613
diff
changeset
|
690 |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
691 typedef struct |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
692 { |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
693 const th_char_t *str; |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
694 const int flags; |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
695 const th_char_t *expected[4]; |
647 | 696 } test_regex_def1; |
697 | |
698 | |
699 typedef struct | |
700 { | |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
701 const th_char_t *pattern; |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
702 const th_char_t *str; |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
703 const int flags; |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
704 const th_char_t *expected[4]; |
647 | 705 } test_regex_def2; |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
706 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
707 |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
708 bool test_regex_list_matches(const th_char_t *str, |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
709 const th_regex_match_t *matches, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
710 const th_char_t * const *expected, |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
711 const bool testOnly) |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
712 { |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
713 size_t nmatch = 0; |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
714 char *match = NULL; |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
715 |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
716 for (const th_regex_match_t *mt = matches; |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
717 mt != NULL; |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
718 mt = (th_regex_match_t *) mt->node.next, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
719 nmatch++) |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
720 { |
710
c1c37f6ca133
Fix a silly memory leak in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
709
diff
changeset
|
721 match = th_strndup(str + mt->start, mt->len); |
c1c37f6ca133
Fix a silly memory leak in tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
709
diff
changeset
|
722 |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
723 if (expected[nmatch] == NULL) |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
724 { |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
725 if (!testOnly) |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
726 { |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
727 THERR("Expected[%" PRIu_SIZE_T "] == NULL, but match '%s' returned.\n", |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
728 nmatch, match); |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
729 } |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
730 |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
731 goto error; |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
732 } |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
733 else |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
734 { |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
735 bool seqMatch = strcmp(match, expected[nmatch]) == 0; |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
736 if (testOnly && !seqMatch) |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
737 goto error; |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
738 |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
739 if (th_verbosity >= 1 || !seqMatch) |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
740 { |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
741 tprint(0, " [%3" PRIu_SIZE_T " ++ %3" PRIu_SIZE_T "]: '%s' == '%s': %s\n", |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
742 mt->start, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
743 mt->len, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
744 match, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
745 expected[nmatch], |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
746 seqMatch ? "YES" : "NO!"); |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
747 } |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
748 } |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
749 |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
750 th_free(match); |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
751 } |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
752 |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
753 return true; |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
754 |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
755 error: |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
756 th_free(match); |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
757 return false; |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
758 } |
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
759 |
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
760 |
664
c5aa9ada1051
s/th_regex_char_t/th_char_t/g
Matti Hamalainen <ccr@tnsp.org>
parents:
651
diff
changeset
|
761 void test_regex_list1(const test_regex_def1 *list, const th_char_t *pattern) |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
762 { |
713
3ea040bb0dca
Fix a memory leak in regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
710
diff
changeset
|
763 th_regex_match_t *matches = NULL; |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
764 th_regex_t *expr = NULL; |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
765 int res; |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
766 |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
767 if ((res = th_regex_compile(&expr, pattern)) != THERR_OK) |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
768 { |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
769 THERR("Regex \"%s\" compilation failed: %s\n", |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
770 pattern, |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
771 th_error_str(res)); |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
772 goto out; |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
773 } |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
774 |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
775 tprint(1, "\n----------------------------------------\n" |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
776 "\"%s\"\n", pattern); |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
777 |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
778 if (th_verbosity >= 2) |
651 | 779 th_regex_dump(&testio, 1, expr); |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
780 |
647 | 781 for (const test_regex_def1 *def = list; def->str != NULL; def++) |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
782 { |
610
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
783 size_t nmatches; |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
784 bool matchOK; |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
785 |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
786 tprint(3, "\n----------------------------------------\n"); |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
787 if ((res = th_regex_match(expr, def->str, |
613 | 788 &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
|
789 { |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
790 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
|
791 th_error_str(res)); |
713
3ea040bb0dca
Fix a memory leak in regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
710
diff
changeset
|
792 |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
793 goto out; |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
794 } |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
795 |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
796 matchOK = test_regex_list_matches(def->str, matches, def->expected, true); |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
797 if (th_verbosity < 1 && !matchOK) |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
798 { |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
799 tprint(0, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
800 "\n----------------------------------------\n" |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
801 " \"%s\" vs \"%s\" failures:\n", |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
802 def->str, pattern); |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
803 } |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
804 else |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
805 { |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
806 tprint(1, " \"%s\": matched %" PRIu_SIZE_T " time(s)\n", |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
807 def->str, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
808 nmatches); |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
809 } |
610
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
810 |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
811 #ifdef TH_EXPERIMENTAL_REGEX_DEBUG |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
812 if (!matchOK && th_dbg_fh == NULL) |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
813 { |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
814 th_dbg_fh = &testio; |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
815 th_regex_match(expr, def->str, NULL, NULL, -1, def->flags); |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
816 th_dbg_fh = NULL; |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
817 } |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
818 #endif |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
819 |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
820 test_regex_list_matches(def->str, matches, def->expected, false); |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
821 |
610
a0e8d9c6300b
A bit more work on the regex stuff.
Matti Hamalainen <ccr@tnsp.org>
parents:
605
diff
changeset
|
822 th_regex_free_matches(matches); |
713
3ea040bb0dca
Fix a memory leak in regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
710
diff
changeset
|
823 matches = NULL; |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
824 } |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
825 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
826 out: |
713
3ea040bb0dca
Fix a memory leak in regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
710
diff
changeset
|
827 th_regex_free_matches(matches); |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
828 th_regex_free(expr); |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
829 } |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
830 |
649 | 831 |
647 | 832 void test_regex_list2(const test_regex_def2 *list) |
833 { | |
834 for (const test_regex_def2 *def = list; def->str != NULL; def++) | |
835 { | |
836 th_regex_t *expr = NULL; | |
837 th_regex_match_t *matches = NULL; | |
838 size_t nmatches; | |
839 int res; | |
840 | |
841 if ((res = th_regex_compile(&expr, def->pattern)) != THERR_OK) | |
842 { | |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
843 THERR("Regex \"%s\" compilation failed: %s\n", |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
844 def->pattern, |
647 | 845 th_error_str(res)); |
846 goto out; | |
847 } | |
848 | |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
849 if (th_verbosity >= 2) |
651 | 850 th_regex_dump(&testio, 1, expr); |
647 | 851 |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
852 tprint(3, "----------------------------------------\n"); |
647 | 853 |
854 if ((res = th_regex_match(expr, def->str, | |
855 &nmatches, &matches, -1, def->flags)) != THERR_OK) | |
856 { | |
857 THERR("Regex match returned error: %s\n", | |
858 th_error_str(res)); | |
859 goto out; | |
860 } | |
861 | |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
862 tprint(1, "\"%s\" vs \"%s\": matched %" PRIu_SIZE_T " time(s)\n", |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
863 def->pattern, def->str, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
864 nmatches); |
647 | 865 |
735
31bc1ed07cf5
Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents:
724
diff
changeset
|
866 test_regex_list_matches(def->str, matches, def->expected, false); |
647 | 867 |
868 out: | |
869 th_regex_free_matches(matches); | |
870 th_regex_free(expr); | |
871 } | |
872 } | |
873 | |
614
afcaf5e38f56
Disable regex stuff from normal builds.
Matti Hamalainen <ccr@tnsp.org>
parents:
613
diff
changeset
|
874 #endif |
afcaf5e38f56
Disable regex stuff from normal builds.
Matti Hamalainen <ccr@tnsp.org>
parents:
613
diff
changeset
|
875 |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
876 |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
877 int main(int argc, char *argv[]) |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
878 { |
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
|
879 size_t i1, i2, i3, i4; |
326
75b22d6f8a71
Simplify and improve integer sprintf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
319
diff
changeset
|
880 char buf[64], buf2[64]; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
881 |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
882 // |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
883 // Initialization |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
884 // |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
885 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
|
886 th_verbosity = 0; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
887 |
603
be957142ab37
Add TEST_ASSERT() and test sizes of some types before doing anything else.
Matti Hamalainen <ccr@tnsp.org>
parents:
602
diff
changeset
|
888 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
|
889 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
|
890 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
|
891 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
|
892 TEST_ASSERT(sizeof(uint64_t) == 8); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
893 |
523 | 894 tests_failed = tests_passed = tests_total = |
895 sets_total = sets_nenabled = 0; | |
896 | |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
897 for (i1 = 0; i1 < SET_MAX_TESTS; i1++) |
365 | 898 sets_enabled[i1] = 1; |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
899 |
651 | 900 th_io_init_stdio(&testio, stdout); |
901 | |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
902 // |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
903 // Parse command line arguments |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
904 // |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
905 if (!th_args_process(argc, argv, arg_opts, arg_nopts, |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
906 arg_handle_opt, NULL, 0)) |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
907 return 0; |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
908 |
365 | 909 tprint(1, "Enabled test types are 0x%04x.\n", optFlags); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
910 |
743
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
911 // |
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
912 // File functions |
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
913 // |
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
914 if (test_set_start("file functions")) |
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
915 { |
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
916 char *home = th_get_home_dir(), *cfg = th_get_config_dir(); |
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
917 th_stat_data stat; |
748
3f59c5ab7fea
Add #ifdef to avoid unused variable warning.
Matti Hamalainen <ccr@tnsp.org>
parents:
745
diff
changeset
|
918 #ifdef TH_PLAT_UNIX |
743
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
919 int res; |
748
3f59c5ab7fea
Add #ifdef to avoid unused variable warning.
Matti Hamalainen <ccr@tnsp.org>
parents:
745
diff
changeset
|
920 #endif |
743
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
921 |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
922 TEST_1B("%s", home, !=, NULL); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
923 TEST_1B("%s", cfg, !=, NULL); |
743
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
924 |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
925 TEST_1A(th_stat_path(home, &stat) == true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
926 TEST_1B("%d", (stat.flags & TH_IS_DIR), !=, 0); |
743
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
927 |
745
0c90dd46c49f
Only do certain th_file tests if we are compiled for *NIX (Win/DOS specific
Matti Hamalainen <ccr@tnsp.org>
parents:
743
diff
changeset
|
928 #ifdef TH_PLAT_UNIX |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
929 TEST_1A(th_stat_path("/nonexist", &stat) == false); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
930 TEST_1A(th_stat_path("/root", &stat) == true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
931 TEST_1B("%d", (stat.flags & TH_IS_WRITABLE), ==, 0); |
743
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
932 |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
933 TEST_1A((res = th_mkdir_path("/tmp/thlibtest/foobar/baz", 0)) == THERR_OK); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
934 TEST_1B("%d", res, ==, THERR_OK); |
743
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
935 if (res == THERR_OK) |
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
936 { |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
937 TEST_1A(th_stat_path("/tmp/thlibtest/foobar/baz", &stat) == true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
938 TEST_1B("%d", (stat.flags & TH_IS_DIR), !=, 0); |
743
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
939 } |
745
0c90dd46c49f
Only do certain th_file tests if we are compiled for *NIX (Win/DOS specific
Matti Hamalainen <ccr@tnsp.org>
parents:
743
diff
changeset
|
940 #endif |
743
e2873f764b63
Add few simplistic tests of th_file module functions.
Matti Hamalainen <ccr@tnsp.org>
parents:
735
diff
changeset
|
941 } |
525
59b8f15c5334
Add (compile-time enabled via TH_PRINTF_DEBUG define) global variable for
Matti Hamalainen <ccr@tnsp.org>
parents:
524
diff
changeset
|
942 |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
943 // |
405 | 944 // Test series for printf() |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
945 // |
544
619e7fcff486
Add more printf() format tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
946 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
|
947 char *i_mods[] = { "", "-", "+", "#", " ", }; |
343 | 948 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
|
949 |
295 | 950 if (test_set_start("printf() integer")) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
951 { |
526
32245648f0f0
More printf() format specifier tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
525
diff
changeset
|
952 int i_vals[] = { |
532
ad64c3f7cf64
Adjust printf int formatting test values and format specifiers.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
953 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
|
954 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
|
955 2147483647, -2147483648 }; |
315 | 956 |
327
b0f9f806c8c9
Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents:
326
diff
changeset
|
957 for (i1 = 0; i1 < NCOUNT(i_vals); i1++) |
315 | 958 { |
319 | 959 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
|
960 |
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
|
961 for (i4 = 0; i4 < NCOUNT(i_mods); i4++) |
332 | 962 for (i3 = 0; i3 < NCOUNT(i_types); i3++) |
963 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
|
964 { |
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
|
965 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
|
966 test_snprintf(buf, buf2, i_vals[i1]); |
75b22d6f8a71
Simplify and improve integer sprintf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
319
diff
changeset
|
967 } |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
968 } |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
969 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
970 |
724
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
971 if (test_set_start("printf() integer 64bit generic")) |
331
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
972 { |
532
ad64c3f7cf64
Adjust printf int formatting test values and format specifiers.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
973 int64_t i_vals64[] = { |
544
619e7fcff486
Add more printf() format tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
974 0, -0, 1, -1, 10, -10, 512, -512, -1024, |
619e7fcff486
Add more printf() format tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
975 612342, -612342, 0x1fff, 0x8000000, -123456789, |
619e7fcff486
Add more printf() format tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
976 4294967295, -2147483648, |
532
ad64c3f7cf64
Adjust printf int formatting test values and format specifiers.
Matti Hamalainen <ccr@tnsp.org>
parents:
530
diff
changeset
|
977 0x3342344341fff, 0x1f8000000, }; |
331
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
978 |
333 | 979 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
|
980 { |
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
|
981 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
|
982 |
340 | 983 for (i4 = 0; i4 < NCOUNT(i_mods); i4++) |
332 | 984 for (i3 = 0; i3 < NCOUNT(i_types); i3++) |
985 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
|
986 { |
402 | 987 snprintf(buf2, sizeof(buf2), "%%%s%sll%s", i_mods[i4], i_fmts[i2], i_types[i3]); |
333 | 988 test_snprintf(buf, buf2, i_vals64[i1]); |
331
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
989 } |
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
990 } |
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
991 } |
6e42d50c08c4
Add tests for 64bit int prints.
Matti Hamalainen <ccr@tnsp.org>
parents:
328
diff
changeset
|
992 |
724
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
993 if (test_set_start("printf() integer 64bit PRI* specifiers")) |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
994 { |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
995 int64_t i_vals64[] = { |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
996 0, -0, 1, -1, 10, -10, 512, -512, -1024, |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
997 612342, -612342, 0x1fff, 0x8000000, -123456789, |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
998 4294967295, -2147483648, |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
999 0x3342344341fff, 0x1f8000000, }; |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1000 |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1001 for (i1 = 0; i1 < NCOUNT(i_vals64); i1++) |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1002 { |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1003 snprintf(buf, sizeof(buf), "%" PRId64, i_vals64[i1]); |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1004 |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1005 for (i4 = 0; i3 < NCOUNT(i_mods); i3++) |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1006 for (i2 = 0; i2 < NCOUNT(i_fmts); i2++) |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1007 { |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1008 snprintf(buf2, sizeof(buf2), "%%%s%s" PRId64, i_mods[i3], i_fmts[i2]); |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1009 test_snprintf(buf, buf2, i_vals64[i1]); |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1010 |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1011 snprintf(buf2, sizeof(buf2), "%%%s%s" PRIx64, i_mods[i3], i_fmts[i2]); |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1012 test_snprintf(buf, buf2, i_vals64[i1]); |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1013 |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1014 snprintf(buf2, sizeof(buf2), "%%%s%s" PRIX64, i_mods[i3], i_fmts[i2]); |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1015 test_snprintf(buf, buf2, i_vals64[i1]); |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1016 } |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1017 } |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1018 } |
388d72f4189d
Add some tests for PRI* printf specifiers to test 64bit.
Matti Hamalainen <ccr@tnsp.org>
parents:
713
diff
changeset
|
1019 |
533
ef0d732fabe0
Disable floating point printf implementation tests as the support is not
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
1020 #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
|
1021 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
|
1022 { |
544
619e7fcff486
Add more printf() format tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
534
diff
changeset
|
1023 double f_vals[] = { 0, 1, 2, 3, 2.02, 612342.234, -2.07, -612342.12, 437692.9876543219, 0x1fff, 0x8000000, 0.15625 }; |
404 | 1024 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
|
1025 |
327
b0f9f806c8c9
Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents:
326
diff
changeset
|
1026 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
|
1027 { |
319 | 1028 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
|
1029 for (i2 = 0; i2 < NCOUNT(f_fmts); i2++) |
319 | 1030 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
|
1031 } |
296
ec8357d02a52
Add floating point tests (which will fail for now).
Matti Hamalainen <ccr@tnsp.org>
parents:
295
diff
changeset
|
1032 } |
533
ef0d732fabe0
Disable floating point printf implementation tests as the support is not
Matti Hamalainen <ccr@tnsp.org>
parents:
532
diff
changeset
|
1033 #endif |
296
ec8357d02a52
Add floating point tests (which will fail for now).
Matti Hamalainen <ccr@tnsp.org>
parents:
295
diff
changeset
|
1034 |
295 | 1035 if (test_set_start("printf() string")) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1036 { |
407 | 1037 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
|
1038 // char *s_fmts[] = { "%s", "%2s", "%-2s", "%5s", "%-5s", "%16s", "%-16s", "%1s", "%-1s", "% 2s", "%03s", "% -12s", "% 03s", "%-.15s", "%.8s" }; |
749
feadd3678d2e
Oops, typofix, missing comma separator between string elements :O
Matti Hamalainen <ccr@tnsp.org>
parents:
748
diff
changeset
|
1039 char *s_fmts[] = { "", "-", " ", "0", " 0", ".", "-.", }; |
596
4ea7b0e9dcba
Improve string printf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
592
diff
changeset
|
1040 int s_widths[] = { 0, 1, 2, 5, 16, }; |
265 | 1041 |
327
b0f9f806c8c9
Implement NCOUNT() macro for getting array element counts (sizeof(arr) / sizeof(arr[0]))
Matti Hamalainen <ccr@tnsp.org>
parents:
326
diff
changeset
|
1042 for (i1 = 0; i1 < NCOUNT(s_vals); i1++) |
596
4ea7b0e9dcba
Improve string printf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
592
diff
changeset
|
1043 for (i2 = 0; i2 < NCOUNT(s_fmts); i2++) |
4ea7b0e9dcba
Improve string printf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
592
diff
changeset
|
1044 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
|
1045 { |
596
4ea7b0e9dcba
Improve string printf() tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
592
diff
changeset
|
1046 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
|
1047 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
|
1048 } |
288 | 1049 } |
1050 | |
295 | 1051 if (test_set_start("printf() char")) |
288 | 1052 { |
319 | 1053 const char c_val = 'x'; |
1054 const char *c_msg = "x"; | |
352 | 1055 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
|
1056 |
0146aa9a9524
Simplify char printf tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
327
diff
changeset
|
1057 for (i1 = 0; i1 < NCOUNT(c_fmts); i1++) |
0146aa9a9524
Simplify char printf tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
327
diff
changeset
|
1058 test_snprintf(c_msg, c_fmts[i1], c_val); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1059 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1060 |
356
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
1061 if (test_set_start("printf() pointers")) |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
1062 { |
407 | 1063 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
|
1064 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
|
1065 |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
1066 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
|
1067 { |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
1068 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
|
1069 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
|
1070 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
|
1071 } |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
1072 } |
d7f43fce0dce
Add tests for printing pointers (%p formatters).
Matti Hamalainen <ccr@tnsp.org>
parents:
352
diff
changeset
|
1073 |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1074 // |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1075 // String matching functions |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1076 // |
465 | 1077 if (test_set_start("String compare #1")) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1078 { |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1079 TEST_2A(th_strcasecmp, "aSdFq" , "asdfq" , true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1080 TEST_2A(th_strcasecmp, "aSdFq" , "asFfq" , false); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1081 TEST_2A(th_strcasecmp, "abcde" , "abcde" , true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1082 TEST_2A(th_strcasecmp, "öäå" , "öäå" , true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1083 TEST_2A(th_strcasecmp, "aöäå" , "aöäå" , true); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1084 } |
255 | 1085 |
465 | 1086 if (test_set_start("String compare #2")) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1087 { |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1088 TEST_3A(th_strncasecmp, "aSdFq" , "asFfqB" , 4, false); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1089 TEST_3A(th_strncasecmp, "aSdFq" , "asFfqQ" , 2, true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1090 TEST_3A(th_strncasecmp, "aSdFq" , "asDfq" , 3, true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1091 TEST_3A(th_strncasecmp, "aSdFq" , "asDfq" , 2, true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1092 TEST_3A(th_strncasecmp, "aSdFq" , "asDfq" , 0, true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1093 TEST_3A(th_strncasecmp, "aSdFq" , "QsDfq" , 0, true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1094 TEST_3A(th_strncasecmp, "aSdFq" , "QsDfq" , 1, false); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1095 TEST_3A(th_strncasecmp, "max=" , "max=4" , 4, true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1096 TEST_3A(th_strncasecmp, "max=" , "max" , 4, false); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1097 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1098 |
465 | 1099 if (test_set_start("String compare #3")) |
1100 { | |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1101 TEST_2C(th_strrcasecmp, "foo aSdFq", " asdfq", true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1102 TEST_2C(th_strrcasecmp, "aSdFq", " asdfq", false); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1103 TEST_2C(th_strrcasecmp, "foo aSdFq baz", "asdfq", false); |
465 | 1104 } |
1105 | |
1106 if (test_set_start("String matching #1")) | |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1107 { |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1108 TEST_2B(th_strmatch, "abba ABBAkukka lol" , "*lol" , true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1109 TEST_2B(th_strmatch, "abba ABBAkukka lol" , "*lo*" , true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1110 TEST_2B(th_strmatch, "abba ABBAkukka lol" , "*lo" , false); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1111 TEST_2B(th_strmatch, "abba ABBAkukka lol" , "abba" , false); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1112 TEST_2B(th_strmatch, "abba ABBAkukka lol" , "*bba*" , true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1113 TEST_2B(th_strmatch, "abba ABBAkukka lol" , "abba*" , true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1114 TEST_2B(th_strmatch, "abba ABBAkukka lol" , "abbak*" , false); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1115 TEST_2B(th_strmatch, "abba ABBAöökukka lol" , "*abbaö?" , false); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1116 } |
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1117 |
465 | 1118 if (test_set_start("String matching #2")) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1119 { |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1120 TEST_2B(th_strcasematch, "abba ABBAkukka lol" , "abbak*" , false); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1121 TEST_2B(th_strcasematch, "abba ABBAkukka lol" , "*abbak*" , true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1122 TEST_2B(th_strcasematch, "abba ABBAkukka lol" , "*ab?ak*" , true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1123 TEST_2B(th_strcasematch, "abba ABBAkukka lol" , "*abbak?" , false); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1124 TEST_2B(th_strcasematch, "abba ABBAkukka lol" , "?bba?abba*" , true); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1125 } |
266 | 1126 |
265 | 1127 // Tests that test for things that do not work correctly yet |
1128 // Unicode / multibyte UTF-8 causes problems here | |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
1129 if ((optFlags & TST_BROKEN) && |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
1130 test_set_start("Invalid UTF-8 handling")) |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1131 { |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1132 TEST_2A(th_strcasecmp, "ÖÄÅ", "öäå", false); // if it worked, SHOULD match |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1133 TEST_3A(th_strncasecmp, "Aäöå", "aöå", 2, true); // if worked, it should NOT match |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1134 TEST_2B(th_strmatch, "öriÖRI! lol", "?ri?RI!*", false); // should match |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1135 } |
266 | 1136 |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
1137 // |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
1138 // printf() PRI* format specifiers, also a compile time test |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
1139 // |
501 | 1140 if (test_set_start("PRI* specifiers")) |
492
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1141 { |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1142 char tmp[32]; |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1143 uint32_t u32 = 0xaabbccdd; |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1144 uint64_t u64 = 0xaabbccdd11223344; |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1145 size_t usiz = |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1146 #if TH_ARCH == 32 |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1147 0x11223344; |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1148 #elif TH_ARCH == 64 |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1149 0xaabbccdd11223344; |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1150 #else |
613 | 1151 # error Unsupported TH_ARCH value. |
492
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1152 #endif |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1153 |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1154 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
|
1155 #if TH_ARCH == 32 |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1156 TEST_2A(strcmp, tmp, "0000000011223344h", true); |
492
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1157 #else |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1158 TEST_2A(strcmp, tmp, "aabbccdd11223344h", true); |
492
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1159 #endif |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1160 |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1161 snprintf(tmp, sizeof(tmp), "%08" PRIx32 "h", u32); |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1162 TEST_2A(strcmp, tmp, "aabbccddh", true); |
492
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1163 snprintf(tmp, sizeof(tmp), "%16" PRIx64 "h", u64); |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1164 TEST_2A(strcmp, tmp, "aabbccdd11223344h", true); |
492
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1165 } |
185a6ea03fea
Add some tests for PRI* types.
Matti Hamalainen <ccr@tnsp.org>
parents:
469
diff
changeset
|
1166 |
508
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
1167 // |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
1168 // Configuration file handling |
fe5e7bf704e5
Improvements to config tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
506
diff
changeset
|
1169 // |
523 | 1170 if (test_set_start("Configuration file handling")) |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
1171 { |
760
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
1172 test_config_file(); |
505
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
1173 } |
50d71fc84831
Add simple tests for th_config.
Matti Hamalainen <ccr@tnsp.org>
parents:
502
diff
changeset
|
1174 |
255 | 1175 // |
760
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
1176 // Linked lists |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
1177 // |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
1178 if (test_set_start("Linked lists")) |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
1179 { |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
1180 test_linked_lists(); |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
1181 } |
1cb9454ec569
Add some simple tests for linked lists.
Matti Hamalainen <ccr@tnsp.org>
parents:
749
diff
changeset
|
1182 // |
524
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
1183 // String functions |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
1184 // |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
1185 if (test_set_start("String functions")) |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
1186 { |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
1187 unsigned int tmpUint; |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
1188 |
764
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1189 TEST_1A(th_get_hex_triplet("0fac11", &tmpUint) == true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1190 TEST_1B("0x%06x", tmpUint, ==, 0x0fac11); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1191 TEST_1A(th_get_hex_triplet("120fac11", &tmpUint) == true); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1192 TEST_1B("0x%06x", tmpUint, ==, 0x120fac11); |
0abba6091bd1
Clean up the tests a bit, rename macros, cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents:
760
diff
changeset
|
1193 TEST_1A(th_get_hex_triplet("x120fac11", &tmpUint) == false); |
524
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
1194 } |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
1195 |
19dc326dcdad
Add few tests for th_get_hex_triplet().
Matti Hamalainen <ccr@tnsp.org>
parents:
523
diff
changeset
|
1196 // |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
1197 // Regular expressions |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
1198 // |
614
afcaf5e38f56
Disable regex stuff from normal builds.
Matti Hamalainen <ccr@tnsp.org>
parents:
613
diff
changeset
|
1199 #ifdef TH_EXPERIMENTAL_REGEX |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
1200 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
|
1201 { |
635
d191ded8a790
Improve the experimental regex matching debugging macros.
Matti Hamalainen <ccr@tnsp.org>
parents:
614
diff
changeset
|
1202 #ifdef TH_EXPERIMENTAL_REGEX_DEBUG |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1203 th_dbg_fh = (th_verbosity >= 3) ? &testio : NULL; |
635
d191ded8a790
Improve the experimental regex matching debugging macros.
Matti Hamalainen <ccr@tnsp.org>
parents:
614
diff
changeset
|
1204 #endif |
d191ded8a790
Improve the experimental regex matching debugging macros.
Matti Hamalainen <ccr@tnsp.org>
parents:
614
diff
changeset
|
1205 |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1206 if (1) |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
1207 { |
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
1208 const char *str = "z*k+abba fabboa? [a-zA-Z_-] \\{\\} k{4} ([0-9]+ yay){1,2} foo(bar|zoo)?"; |
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
1209 th_regex_t *expr = NULL; |
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
1210 int res = th_regex_compile(&expr, str); |
666 | 1211 |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
1212 printf("REGEX: \"%s\"\n", str); |
666 | 1213 |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
1214 if (res == THERR_OK) |
651 | 1215 th_regex_dump(&testio, 1, expr); |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
1216 else |
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
1217 printf("ERROR: %s\n", th_error_str(res)); |
666 | 1218 |
645
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
1219 th_regex_free(expr); |
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
1220 } |
b897995101b7
More fiddling and twiddling. Add parsing to string nodes instead of separate character nodes.
Matti Hamalainen <ccr@tnsp.org>
parents:
643
diff
changeset
|
1221 |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1222 if (1) |
640
9e1f9e1d1487
Aaand some more work. Still just a broken concept.
Matti Hamalainen <ccr@tnsp.org>
parents:
635
diff
changeset
|
1223 { |
647 | 1224 static const test_regex_def1 tlist[] = |
613 | 1225 { |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1226 { "abcfoabcccg" , 0, { "abcfoabcccg", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1227 { "sabcbcfoabcccgz" , 0, { "abcbcfoabcccg", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1228 { "abcbcfoabccg abcbcfoabccccg" , 0, { "abcbcfoabccg", "abcbcfoabccccg" } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1229 { NULL , 0, { NULL } } |
613 | 1230 }; |
1231 | |
647 | 1232 test_regex_list1(tlist, "a(bc){1,2}fo[oab]*cc?g"); |
613 | 1233 } |
1234 | |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1235 if (1) |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
1236 { |
647 | 1237 static const test_regex_def1 tlist[] = |
613 | 1238 { |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1239 { "abcfoabccg" , 0, { "abcfoabccg", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1240 { "abcbcfoabccg" , 0, { "abcbcfoabccg", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1241 { "abcbcfoabccgabcbcfoabccg" , 0, { "abcbcfoabccg", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1242 { "ffdsafS abcbcfoabccg zasdf" , 0, { NULL } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1243 { NULL , 0, { NULL } } |
613 | 1244 }; |
1245 | |
647 | 1246 test_regex_list1(tlist, "^a(bc){1,2}fo[oab]*cc?g"); |
613 | 1247 } |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
1248 |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1249 if (1) |
613 | 1250 { |
647 | 1251 static const test_regex_def1 tlist[] = |
613 | 1252 { |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1253 { "cg" , 0, { "g", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1254 { "g" , 0, { "g", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1255 { "" , 0, { NULL, } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1256 { "c" , 0, { NULL, } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1257 { NULL , 0, { NULL } } |
613 | 1258 }; |
1259 | |
647 | 1260 test_regex_list1(tlist, "g$"); |
613 | 1261 } |
1262 | |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1263 if (1) |
613 | 1264 { |
647 | 1265 static const test_regex_def1 tlist[] = |
613 | 1266 { |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1267 { "kzoobarzz" , 0, { "zoobar", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1268 { "hehzoo lol baromg" , 0, { "zoo lol bar", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1269 { "hoho zoo lol lol bar bar f" , 0, { "zoo lol lol bar", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1270 { "hoho zoobar bar heh" , 0, { "zoobar", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1271 { NULL , 0, { NULL } } |
613 | 1272 }; |
1273 | |
647 | 1274 test_regex_list1(tlist, "zoo.*?bar"); |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1275 } |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1276 |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1277 if (1) |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1278 { |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1279 static const test_regex_def1 tlist[] = |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1280 { |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1281 { "kzoobarzz" , 0, { "zoobar", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1282 { "hehzoo lol baromg" , 0, { "zoo lol bar", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1283 { "hoho zoo lol lol bar bar f" , 0, { "zoo lol lol bar bar", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1284 { "hoho zoobar bar heh" , 0, { "zoobar bar", } }, |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1285 { NULL , 0, { NULL } } |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1286 }; |
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1287 |
666 | 1288 test_regex_list1(tlist, "zoo.*bar"); |
613 | 1289 } |
668
48e8820bc625
Some work on the regex tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
666
diff
changeset
|
1290 |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
1291 } |
614
afcaf5e38f56
Disable regex stuff from normal builds.
Matti Hamalainen <ccr@tnsp.org>
parents:
613
diff
changeset
|
1292 #endif |
605
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
1293 |
566e6ef41f9d
Initial commit of the highly experimental and unfinished regular expression
Matti Hamalainen <ccr@tnsp.org>
parents:
603
diff
changeset
|
1294 // |
255 | 1295 // Print summary and exit |
1296 // | |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
1297 tprint(1, |
276
56b0de9f9d44
Improve tests output per verbosity level.
Matti Hamalainen <ccr@tnsp.org>
parents:
274
diff
changeset
|
1298 "======================================================\n"); |
282
f0cb48b34463
Implement selectable tests.
Matti Hamalainen <ccr@tnsp.org>
parents:
276
diff
changeset
|
1299 |
304
3fcf42cce43d
Fix some tests and use stdout for output.
Matti Hamalainen <ccr@tnsp.org>
parents:
303
diff
changeset
|
1300 tprint(0, |
312 | 1301 "%d tests failed, %d passed (%d main tests), %d test sets of %d sets total.\n\n", |
365 | 1302 tests_failed, tests_passed, tests_total, sets_nenabled, sets_total); |
255 | 1303 |
254
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1304 return 0; |
3d1e2af4e4e6
Start of a very simplistic unit test suite. Initially handling just printf()
Matti Hamalainen <ccr@tnsp.org>
parents:
diff
changeset
|
1305 } |