TPCCLIB
Loading...
Searching...
No Matches
libtpcextensions.c
1/******************************************************************************
2 * This file is not compiled into the library, but it contains main()
3 * which is compiled to an executable, used to test the library functions.
4 *****************************************************************************/
5
6/*****************************************************************************/
7#include "tpcclibConfig.h"
8/*****************************************************************************/
9#include <stdio.h>
10#include <stdlib.h>
11#include <math.h>
12#include <time.h>
13#include <string.h>
14#include <ctype.h>
15#include <unistd.h>
16/*****************************************************************************/
17#include "tpcextensions.h"
18#include "test_tpcextensions.h"
19/*****************************************************************************/
20
21/*****************************************************************************/
22static char *info[] = {
23 "Usage: @P [options]",
24 " ",
25 "Options:",
26 " -stdoptions", // List standard options like --help, -v, etc
27 " -t, --test",
28 " Run all tests for library functions.",
29 0};
30/*****************************************************************************/
31
32/*****************************************************************************/
37int main(
39 int argc,
41 char *argv[ ]
42) {
43 int i, help=0, version=0, verbose=1, error=0, test=0;
44 int ret;
45 char *cptr;
46
47 if(argc==1) {tpcPrintUsage(argv[0], info, stdout); return(0);}
48 for(i=1; i<argc; i++) {
49 if(tpcProcessStdOptions(argv[i], &help, &version, &verbose)==0) continue;
50 cptr=argv[i]; if(*cptr=='-') cptr++; if(*cptr=='-') cptr++;
51 if(strncasecmp(cptr, "TEST", 1)==0) {
52 test=1; continue;
53 } else {
54 error++; break;
55 }
56 }
57 if(error>0) {
58 fprintf(stderr, "Error: specify --help for usage.\n");
59 return(1);
60 }
61 /* Print help or version? */
62 if(help) {tpcPrintUsage(argv[0], info, stdout); return(0);}
63 if(version) {tpcPrintBuild(argv[0], stdout); return(0);}
64
65 if(test==0) return(0);
66
67 if(verbose>0) printf("running tests for library functions...\n");
68 TPCSTATUS status; statusInit(&status); status.verbose=verbose;
69 statusSet(&status, __func__, __FILE__, __LINE__, 0);
70 i=10;
71
72 /* strext */
73 i++; if((ret=test_strTokenNr(&status))!=0) {
74 fprintf(stderr, "failed (%d).\n", ret); return(i);}
75 i++; if((ret=test_strTokenNCpy(&status))!=0) {
76 fprintf(stderr, "failed (%d).\n", ret); return(i);}
77 i++; if((ret=test_strChrCount(&status))!=0) {
78 fprintf(stderr, "failed (%d).\n", ret); return(i);}
79 i++; if((ret=test_strUppercaseCount(&status))!=0) {
80 fprintf(stderr, "failed (%d).\n", ret); return(i);}
81 i++; if((ret=test_strReplaceChar(&status))!=0) {
82 fprintf(stderr, "failed (%d).\n", ret); return(i);}
83#ifndef HAVE_STRNDUP // Test only if own implementation is used
84 i++; if((ret=test_strndup(&status))!=0) {
85 fprintf(stderr, "failed (%d).\n", ret); return(i);}
86#endif
87 i++; if((ret=test_strstrNoQuotation(&status))!=0) {
88 fprintf(stderr, "failed (%d).\n", ret); return(i);}
89 i++; if((ret=test_strncpyCleanSpaces(&status))!=0) {
90 fprintf(stderr, "failed (%d).\n", ret); return(i);}
91 i++; if((ret=test_strCleanSpaces(&status))!=0) {
92 fprintf(stderr, "failed (%d).\n", ret); return(i);}
93 i++; if((ret=test_strncpyClean(&status))!=0) {
94 fprintf(stderr, "failed (%d).\n", ret); return(i);}
95 i++; if((ret=test_strClean(&status))!=0) {
96 fprintf(stderr, "failed (%d).\n", ret); return(i);}
97 i++; if((ret=test_strTokenDup(&status))!=0) {
98 fprintf(stderr, "failed (%d).\n", ret); return(i);}
99 i++; if((ret=test_strInPars(&status))!=0) {
100 fprintf(stderr, "failed (%d).\n", ret); return(i);}
101 i++; if((ret=test_strCleanPars(&status))!=0) {
102 fprintf(stderr, "failed (%d).\n", ret); return(i);}
103 i++; if((ret=test_strncatInt(&status))!=0) {
104 fprintf(stderr, "failed (%d).\n", ret); return(i);}
105 i++; if((ret=test_strncatDouble(&status))!=0) {
106 fprintf(stderr, "failed (%d).\n", ret); return(i);}
107 i++; if((ret=test_strncatIntZ(&status))!=0) {
108 fprintf(stderr, "failed (%d).\n", ret); return(i);}
109#ifndef HAVE_STRNLEN // Test only if own implementation is used
110 i++; if((ret=test_strnlen(&status))!=0) {
111 fprintf(stderr, "failed (%d).\n", ret); return(i);}
112#endif
113#ifndef HAVE_STRLCAT // Test only if own implementation is used
114 i++; if((ret=test_strlcat(&status))!=0) {
115 fprintf(stderr, "failed (%d).\n", ret); return(i);}
116#endif
117#ifndef HAVE_STRLCPY // Test only if own implementation is used
118 i++; if((ret=test_strlcpy(&status))!=0) {
119 fprintf(stderr, "failed (%d).\n", ret); return(i);}
120#endif
121 i++; if((ret=test_strIsSpaceOnly(&status))!=0) {
122 fprintf(stderr, "failed (%d).\n", ret); return(i);}
123 i++; if((ret=test_strdelstr(&status))!=0) {
124 fprintf(stderr, "failed (%d).\n", ret); return(i);}
125 i++; if((ret=test_strTrimLeft(&status))!=0) {
126 fprintf(stderr, "failed (%d).\n", ret); return(i);}
127 i++; if((ret=test_strEncodeForXML(&status))!=0) {
128 fprintf(stderr, "failed (%d).\n", ret); return(i);}
129 i++; if((ret=test_strCleanForXML(&status))!=0) {
130 fprintf(stderr, "failed (%d).\n", ret); return(i);}
131
132 /* decpoint */
133 i++; if((ret=test_strIsValidNumber(&status))!=0) {
134 fprintf(stderr, "failed (%d).\n", ret); return(i);}
135 i++; if((ret=test_atofVerified(&status))!=0) {
136 fprintf(stderr, "failed (%d).\n", ret); return(i);}
137 i++; if((ret=test_atofCheck(&status)!=0)) {
138 fprintf(stderr, "failed (%d).\n", ret); return(i);}
139 i++; if((ret=test_strHaveDecimalComma(&status))!=0) {
140 fprintf(stderr, "failed (%d).\n", ret); return(i);}
141 i++; if((ret=test_strHaveDecimalSeparator(&status))!=0) {
142 fprintf(stderr, "failed (%d).\n", ret); return(i);}
143 i++; if((ret=test_atofList(&status))!=0) {
144 fprintf(stderr, "failed (%d).\n", ret); return(i);}
145
146 /* filename */
147 i++; if((ret=test_filenameRmPath(&status))!=0) {
148 fprintf(stderr, "failed (%d).\n", ret); return(i);}
149 i++; if((ret=test_filenameRmFile(&status))!=0) {
150 fprintf(stderr, "failed (%d).\n", ret); return(i);}
151 i++; if((ret=test_filenameRmExtension(&status))!=0) {
152 fprintf(stderr, "failed (%d).\n", ret); return(i);}
153 i++; if((ret=test_filenameRmExtensions(&status))!=0) {
154 fprintf(stderr, "failed (%d).\n", ret); return(i);}
155 i++; if((ret=test_fnmatch(&status))!=0) {
156 fprintf(stderr, "failed (%d).\n", ret); return(i);}
157 i++; if((ret=test_fncasematch(&status))!=0) {
158 fprintf(stderr, "failed (%d).\n", ret); return(i);}
159 i++; if((ret=test_filenameGetExtension(&status))!=0) {
160 fprintf(stderr, "failed (%d).\n", ret); return(i);}
161 i++; if((ret=test_filenameGetExtensions(&status))!=0) {
162 fprintf(stderr, "failed (%d).\n", ret); return(i);}
163
164 /* proginfo */
165 i++; if((ret=test_tpcProcessStdOptions(&status))!=0) {
166 fprintf(stderr, "failed (%d).\n", ret); return(i);}
167 i++; if((ret=test_tpcPrintUsage(&status))!=0) {
168 fprintf(stderr, "failed (%d).\n", ret); return(i);}
169 i++; if((ret=test_tpcPrintBuild(&status))!=0) {
170 fprintf(stderr, "failed (%d).\n", ret); return(i);}
171 i++; if((ret=test_tpcProgramName(&status))!=0) {
172 fprintf(stderr, "failed (%d).\n", ret); return(i);}
173 i++; if((ret=test_tpcYesNo(&status))!=0) {
174 fprintf(stderr, "failed (%d).\n", ret); return(i);}
175
176 /* units */
177 i++; if((ret=test_unitName(&status))!=0) {
178 fprintf(stderr, "failed (%d).\n", ret); return(i);}
179 i++; if((ret=test_unitIdentify(&status))!=0) {
180 fprintf(stderr, "failed (%d).\n", ret); return(i);}
181 i++; if((ret=test_unitIdentifyFilename(&status))!=0) {
182 fprintf(stderr, "failed (%d).\n", ret); return(i);}
183 i++; if((ret=test_unitIsDistance(&status))!=0) {
184 fprintf(stderr, "failed (%d).\n", ret); return(i);}
185 i++; if((ret=test_unitIsTime(&status))!=0) {
186 fprintf(stderr, "failed (%d).\n", ret); return(i);}
187 i++; if((ret=test_unitIsVolume(&status))!=0) {
188 fprintf(stderr, "failed (%d).\n", ret); return(i);}
189 i++; if((ret=test_unitIsMass(&status))!=0) {
190 fprintf(stderr, "failed (%d).\n", ret); return(i);}
191 i++; if((ret=test_unitIsMole(&status))!=0) {
192 fprintf(stderr, "failed (%d).\n", ret); return(i);}
193 i++; if((ret=test_unitIsRadioactivity(&status))!=0) {
194 fprintf(stderr, "failed (%d).\n", ret); return(i);}
195 i++; if((ret=test_unitIsRAConc(&status))!=0) {
196 fprintf(stderr, "failed (%d).\n", ret); return(i);}
197 i++; if((ret=test_unitIsCombinatorial(&status))!=0) {
198 fprintf(stderr, "failed (%d).\n", ret); return(i);}
199 i++; if((ret=test_unitConversionFactor(&status))!=0) {
200 fprintf(stderr, "failed (%d).\n", ret); return(i);}
201 i++; if((ret=test_unitInverse(&status))!=0) {
202 fprintf(stderr, "failed (%d).\n", ret); return(i);}
203 i++; if((ret=test_unitDividerHasVolume(&status))!=0) {
204 fprintf(stderr, "failed (%d).\n", ret); return(i);}
205 i++; if((ret=test_unitDividerHasMass(&status))!=0) {
206 fprintf(stderr, "failed (%d).\n", ret); return(i);}
207 i++; if((ret=test_unitDividendHasRadioactivity(&status))!=0) {
208 fprintf(stderr, "failed (%d).\n", ret); return(i);}
209 i++; if((ret=test_unitCombination(&status))!=0) {
210 fprintf(stderr, "failed (%d).\n", ret); return(i);}
211 i++; if((ret=test_unitDividerMassVolumeConversion(&status))!=0) {
212 fprintf(stderr, "failed (%d).\n", ret); return(i);}
213 i++; if((ret=test_unitMultiply(&status))!=0) {
214 fprintf(stderr, "failed (%d).\n", ret); return(i);}
215
216 /* statusmsg */
217 i++; if((ret=test_statusPrint(&status))!=0) {
218 fprintf(stderr, "failed (%d).\n", ret); return(i);}
219 i++; if((ret=test_errorMsg(&status))!=0) {
220 fprintf(stderr, "failed (%d).\n", ret); return(i);}
221
222 /* readasciifile */
223 i++; if((ret=test_asciiFileSize(&status))!=0) {
224 fprintf(stderr, "failed (%d).\n", ret); return(i);}
225 i++; if((ret=test_asciiFileRead(&status))!=0) {
226 fprintf(stderr, "failed (%d).\n", ret); return(i);}
227 i++; if((ret=test_asciiCommentLine(&status))!=0) {
228 fprintf(stderr, "failed (%d).\n", ret); return(i);}
229
230 /* datetime */
231 i++; if((ret=test_strDateValid(&status))!=0) {
232 fprintf(stderr, "failed (%d).\n", ret); return(i);}
233 i++; if((ret=test_strDateValid2(&status))!=0) {
234 fprintf(stderr, "failed (%d).\n", ret); return(i);}
235 i++; if((ret=test_strDateValid3(&status))!=0) {
236 fprintf(stderr, "failed (%d).\n", ret); return(i);}
237 i++; if((ret=test_strDateValid4(&status))!=0) {
238 fprintf(stderr, "failed (%d).\n", ret); return(i);}
239 i++; if((ret=test_strTimeValid(&status))!=0) {
240 fprintf(stderr, "failed (%d).\n", ret); return(i);}
241 i++; if((ret=test_strDateTimeValid(&status))!=0) {
242 fprintf(stderr, "failed (%d).\n", ret); return(i);}
243 i++; if((ret=test_strDateTimeRead(&status))!=0) {
244 fprintf(stderr, "failed (%d).\n", ret); return(i);}
245 i++; if((ret=test_strDateRead(&status))!=0) {
246 fprintf(stderr, "failed (%d).\n", ret); return(i);}
247 i++; if((ret=test_time_to_tm(&status))!=0) {
248 fprintf(stderr, "failed (%d).\n", ret); return(i);}
249 i++; if((ret=test_tmDifference(&status))!=0) {
250 fprintf(stderr, "failed (%d).\n", ret); return(i);}
251 i++; if((ret=test_tmAdd(&status))!=0) {
252 fprintf(stderr, "failed (%d).\n", ret); return(i);}
253 i++; if((ret=test_strDateTimeDifference(&status))!=0) {
254 fprintf(stderr, "failed (%d).\n", ret); return(i);}
255 i++; if((ret=test_strDateTimeAdd(&status))!=0) {
256 fprintf(stderr, "failed (%d).\n", ret); return(i);}
257 i++; if((ret=test_timespecDifference(&status))!=0) {
258 fprintf(stderr, "failed (%d).\n", ret); return(i);}
259
260 /* studynr */
261 i++; if((ret=test_studynrVerify(&status))!=0) {
262 fprintf(stderr, "failed (%d).\n", ret); return(i);}
263 i++; if((ret=test_studynrStandardize(&status))!=0) {
264 fprintf(stderr, "failed (%d).\n", ret); return(i);}
265 i++; if((ret=test_studynrFromFilename(&status))!=0) {
266 fprintf(stderr, "failed (%d).\n", ret); return(i);}
267
268 /* doubleutil */
269 i++; if((ret=test_doubleMatch(&status))!=0) {
270 fprintf(stderr, "failed (%d).\n", ret); return(i);}
271 i++; if((ret=test_doubleArrayMatch(&status))!=0) {
272 fprintf(stderr, "failed (%d).\n", ret); return(i);}
273 i++; if((ret=test_doubleMatchRel(&status))!=0) {
274 fprintf(stderr, "failed (%d).\n", ret); return(i);}
275 i++; if((ret=test_doubleMachEps(&status))!=0) {
276 fprintf(stderr, "failed (%d).\n", ret); return(i);}
277 i++; if((ret=test_doubleCopy(&status))!=0) {
278 fprintf(stderr, "failed (%d).\n", ret); return(i);}
279 i++; if((ret=test_doubleCopyFinite(&status))!=0) {
280 fprintf(stderr, "failed (%d).\n", ret); return(i);}
281 i++; if((ret=test_doubleNaNs(&status))!=0) {
282 fprintf(stderr, "failed (%d).\n", ret); return(i);}
283 i++; if((ret=test_doubleRange(&status))!=0) {
284 fprintf(stderr, "failed (%d).\n", ret); return(i);}
285 i++; if((ret=test_doubleSum(&status))!=0) {
286 fprintf(stderr, "failed (%d).\n", ret); return(i);}
287 i++; if((ret=test_doubleMean(&status))!=0) {
288 fprintf(stderr, "failed (%d).\n", ret); return(i);}
289 i++; if((ret=test_doubleWMean(&status))!=0) {
290 fprintf(stderr, "failed (%d).\n", ret); return(i);}
291 i++; if((ret=test_doubleGetWithUnit(&status))!=0) {
292 fprintf(stderr, "failed (%d).\n", ret); return(i);}
293 i++; if((ret=test_doubleSpanPositives(&status))!=0) {
294 fprintf(stderr, "failed (%d).\n", ret); return(i);}
295 i++; if((ret=test_doubleCSpanPositives(&status))!=0) {
296 fprintf(stderr, "failed (%d).\n", ret); return(i);}
297 i++; if((ret=test_doubleNonzeroes(&status))!=0) {
298 fprintf(stderr, "failed (%d).\n", ret); return(i);}
299 i++; if((ret=test_doubleMaxIndex(&status))!=0) {
300 fprintf(stderr, "failed (%d).\n", ret); return(i);}
301 i++; if((ret=test_doubleAbsMaxIndex(&status))!=0) {
302 fprintf(stderr, "failed (%d).\n", ret); return(i);}
303 i++; if((ret=test_doubleMinIndex(&status))!=0) {
304 fprintf(stderr, "failed (%d).\n", ret); return(i);}
305 i++; if((ret=test_doubleAbsMinIndex(&status))!=0) {
306 fprintf(stderr, "failed (%d).\n", ret); return(i);}
307 i++; if((ret=test_doubleGEIndex(&status))!=0) {
308 fprintf(stderr, "failed (%d).\n", ret); return(i);}
309 i++; if((ret=test_doubleGTIndex(&status))!=0) {
310 fprintf(stderr, "failed (%d).\n", ret); return(i);}
311 i++; if((ret=test_inverfc(&status))!=0) {
312 fprintf(stderr, "failed (%d).\n", ret); return(i);}
313 i++; if((ret=test_linRegr3p(&status))!=0) {
314 fprintf(stderr, "failed (%d).\n", ret); return(i);}
315
316 /* floatutil */
317 i++; if((ret=test_floatMatch(&status))!=0) {
318 fprintf(stderr, "failed (%d).\n", ret); return(i);}
319 i++; if((ret=test_floatMatchRel(&status))!=0) {
320 fprintf(stderr, "failed (%d).\n", ret); return(i);}
321 i++; if((ret=test_floatMachEps(&status))!=0) {
322 fprintf(stderr, "failed (%d).\n", ret); return(i);}
323 i++; if((ret=test_floatCopy(&status))!=0) {
324 fprintf(stderr, "failed (%d).\n", ret); return(i);}
325 i++; if((ret=test_floatMaxIndex(&status))!=0) {
326 fprintf(stderr, "failed (%d).\n", ret); return(i);}
327 i++; if((ret=test_floatSum(&status))!=0) {
328 fprintf(stderr, "failed (%d).\n", ret); return(i);}
329 i++; if((ret=test_floatMean(&status))!=0) {
330 fprintf(stderr, "failed (%d).\n", ret); return(i);}
331 i++; if((ret=test_floatGetWithUnit(&status))!=0) {
332 fprintf(stderr, "failed (%d).\n", ret); return(i);}
333 i++; if((ret=test_floatSpanPositives(&status))!=0) {
334 fprintf(stderr, "failed (%d).\n", ret); return(i);}
335 i++; if((ret=test_floatCSpanPositives(&status))!=0) {
336 fprintf(stderr, "failed (%d).\n", ret); return(i);}
337 i++; if((ret=test_floatNonzeroes(&status))!=0) {
338 fprintf(stderr, "failed (%d).\n", ret); return(i);}
339 /* intutil */
340 i++; if((ret=test_atoiCheck(&status))!=0) {
341 fprintf(stderr, "failed (%d).\n", ret); return(i);}
342 i++; if((ret=test_factorial(&status))!=0) {
343 fprintf(stderr, "failed (%d).\n", ret); return(i);}
344 i++; if((ret=test_lfactorial(&status))!=0) {
345 fprintf(stderr, "failed (%d).\n", ret); return(i);}
346 i++; if((ret=test_intlistInit(&status))!=0) {
347 fprintf(stderr, "failed (%d).\n", ret); return(i);}
348 i++; if((ret=test_intlistFree(&status))!=0) {
349 fprintf(stderr, "failed (%d).\n", ret); return(i);}
350 i++; if((ret=test_intlistAdd(&status))!=0) {
351 fprintf(stderr, "failed (%d).\n", ret); return(i);}
352 i++; if((ret=test_intlistSort(&status))!=0) {
353 fprintf(stderr, "failed (%d).\n", ret); return(i);}
354 i++; if((ret=test_intlistAddFromString(&status))!=0) {
355 fprintf(stderr, "failed (%d).\n", ret); return(i);}
356 i++; if((ret=test_intlistExpandFromString(&status))!=0) {
357 fprintf(stderr, "failed (%d).\n", ret); return(i);}
358
359 /* roiname */
360 i++; if((ret=test_roinameSubpart(&status))!=0) {
361 fprintf(stderr, "failed (%d).\n", ret); return(i);}
362 i++; if((ret=test_roinameEditByTemplate(&status))!=0) {
363 fprintf(stderr, "failed (%d).\n", ret); return(i);}
364 i++; if((ret=test_roinameAddField(&status))!=0) {
365 fprintf(stderr, "failed (%d).\n", ret); return(i);}
366 i++; if((ret=test_roinameExists(&status))!=0) {
367 fprintf(stderr, "failed (%d).\n", ret); return(i);}
368 i++; if((ret=test_roinameMatch(&status))!=0) {
369 fprintf(stderr, "failed (%d).\n", ret); return(i);}
370
371 /* endian */
372 i++; if((ret=test_endianness(&status))!=0) {
373 fprintf(stderr, "failed (%d).\n", ret); return(i);}
374 i++; if((ret=test_endianLittle(&status))!=0) {
375 fprintf(stderr, "failed (%d).\n", ret); return(i);}
376 i++; if((ret=test_swap(&status))!=0) {
377 fprintf(stderr, "failed (%d).\n", ret); return(i);}
378 i++; if((ret=test_swabip(&status))!=0) {
379 fprintf(stderr, "failed (%d).\n", ret); return(i);}
380 i++; if((ret=test_swawbip(&status))!=0) {
381 fprintf(stderr, "failed (%d).\n", ret); return(i);}
382 i++; if((ret=test_swawip(&status))!=0) {
383 fprintf(stderr, "failed (%d).\n", ret); return(i);}
384 i++; if((ret=test_swap64ip(&status))!=0) {
385 fprintf(stderr, "failed (%d).\n", ret); return(i);}
386 i++; if((ret=test_swap32ip(&status))!=0) {
387 fprintf(stderr, "failed (%d).\n", ret); return(i);}
388 i++; if((ret=test_swap16ip(&status))!=0) {
389 fprintf(stderr, "failed (%d).\n", ret); return(i);}
390
391 if(verbose>0) printf("\nAll tests passed.\n\n");
392 return(0);
393}
394/*****************************************************************************/
395
396/*****************************************************************************/
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
Definition proginfo.c:47
void tpcPrintBuild(const char *program, FILE *fp)
Definition proginfo.c:339
void tpcPrintUsage(const char *program, char *text[], FILE *fp)
Definition proginfo.c:114
void statusInit(TPCSTATUS *s)
Definition statusmsg.c:104
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
Definition statusmsg.c:142
int verbose
Verbose level, used by statusPrint() etc.
Header file for library libtpcextensions.