TPCCLIB
Loading...
Searching...
No Matches
libtpcdcm.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/*****************************************************************************/
19#include "tpcdcm.h"
20#include "test_tpcdcm.h"
21/*****************************************************************************/
22
23/*****************************************************************************/
24static char *info[] = {
25 "Usage: @P [options]",
26 " ",
27 "Options:",
28 " -stdoptions", // List standard options like --help, -v, etc
29 " -t, --test",
30 " Run all tests for library functions.",
31 0};
32/*****************************************************************************/
33
34/*****************************************************************************/
39int main(
41 int argc,
43 char *argv[ ]
44) {
45 int i, help=0, version=0, verbose=1, error=0, test=0;
46 int ret;
47 char *cptr;
48
49 if(argc==1) {tpcPrintUsage(argv[0], info, stdout); return(0);}
50 for(i=1; i<argc; i++) {
51 if(tpcProcessStdOptions(argv[i], &help, &version, &verbose)==0) continue;
52 cptr=argv[i]; if(*cptr=='-') cptr++; if(*cptr=='-') cptr++;
53 if(strncasecmp(cptr, "TEST", 1)==0) {
54 test=1; continue;
55 } else {
56 error++; break;
57 }
58 }
59 if(error>0) {
60 fprintf(stderr, "Error: specify --help for usage.\n");
61 return(1);
62 }
63 /* Print help or version? */
64 if(help) {tpcPrintUsage(argv[0], info, stdout); return(0);}
65 if(version) {tpcPrintBuild(argv[0], stdout); return(0);}
66
67 if(test==0) return(0);
68
69 if(verbose>0) printf("running tests for library functions...\n");
70 TPCSTATUS status; statusInit(&status); status.verbose=verbose;
71 statusSet(&status, __func__, __FILE__, __LINE__, 0);
72 i=10;
73
74 /* dcmdata */
75 i++; if((ret=test_dcmfileInit(&status))!=0) {
76 fprintf(stderr, "failed (%d).\n", ret);
77 statusPrint(stderr, &status); statusFree(&status);
78 return(i);
79 }
80 i++; if((ret=test_dcmfileFree(&status))!=0) {
81 fprintf(stderr, "failed (%d).\n", ret);
82 statusPrint(stderr, &status); statusFree(&status);
83 return(i);
84 }
85 i++; if((ret=test_dcmitemMaxDepth(&status))!=0) {
86 fprintf(stderr, "failed (%d).\n", ret);
87 statusPrint(stderr, &status); statusFree(&status);
88 return(i);
89 }
90 i++; if((ret=test_dcmfileMaxDepth(&status))!=0) {
91 fprintf(stderr, "failed (%d).\n", ret);
92 statusPrint(stderr, &status); statusFree(&status);
93 return(i);
94 }
95 i++; if((ret=test_dcmitemParentNr(&status))!=0) {
96 fprintf(stderr, "failed (%d).\n", ret);
97 statusPrint(stderr, &status); statusFree(&status);
98 return(i);
99 }
100 i++; if((ret=test_dcmValueString(&status))!=0) {
101 fprintf(stderr, "failed (%d).\n", ret);
102 statusPrint(stderr, &status); statusFree(&status);
103 return(i);
104 }
105 i++; if((ret=test_dcmitemGetInt(&status))!=0) {
106 fprintf(stderr, "failed (%d).\n", ret);
107 statusPrint(stderr, &status); statusFree(&status);
108 return(i);
109 }
110 i++; if((ret=test_dcmitemGetReal(&status))!=0) {
111 fprintf(stderr, "failed (%d).\n", ret);
112 statusPrint(stderr, &status); statusFree(&status);
113 return(i);
114 }
115 i++; if((ret=test_dcmFindTag(&status))!=0) {
116 fprintf(stderr, "failed (%d).\n", ret);
117 statusPrint(stderr, &status); statusFree(&status);
118 return(i);
119 }
120 /* dcmuid */
121 i++; if((ret=test_dcmTrUIDDescr(&status))!=0) {
122 fprintf(stderr, "failed (%d).\n", ret);
123 statusPrint(stderr, &status); statusFree(&status);
124 return(i);
125 }
126 i++; if((ret=test_dcmTrUIDString(&status))!=0) {
127 fprintf(stderr, "failed (%d).\n", ret);
128 statusPrint(stderr, &status); statusFree(&status);
129 return(i);
130 }
131 i++; if((ret=test_dcmTrUID(&status))!=0) {
132 fprintf(stderr, "failed (%d).\n", ret);
133 statusPrint(stderr, &status); statusFree(&status);
134 return(i);
135 }
136 /* dcmsop */
137 i++; if((ret=test_dcmSOPIdentify(&status))!=0) {
138 fprintf(stderr, "failed (%d).\n", ret);
139 statusPrint(stderr, &status); statusFree(&status);
140 return(i);
141 }
142 i++; if((ret=test_dcmSOPName(&status))!=0) {
143 fprintf(stderr, "failed (%d).\n", ret);
144 statusPrint(stderr, &status); statusFree(&status);
145 return(i);
146 }
147 i++; if((ret=test_dcmSOPUID(&status))!=0) {
148 fprintf(stderr, "failed (%d).\n", ret);
149 statusPrint(stderr, &status); statusFree(&status);
150 return(i);
151 }
152 i++; if((ret=test_dcmSOPUIDName(&status))!=0) {
153 fprintf(stderr, "failed (%d).\n", ret);
154 statusPrint(stderr, &status); statusFree(&status);
155 return(i);
156 }
157 /* dcmvr */
158 i++; if((ret=test_dcmVRName(&status))!=0) {
159 fprintf(stderr, "failed (%d).\n", ret);
160 statusPrint(stderr, &status); statusFree(&status);
161 return(i);
162 }
163 i++; if((ret=test_dcmVRDescr(&status))!=0) {
164 fprintf(stderr, "failed (%d).\n", ret);
165 statusPrint(stderr, &status); statusFree(&status);
166 return(i);
167 }
168 i++; if((ret=test_dcmVRId(&status))!=0) {
169 fprintf(stderr, "failed (%d).\n", ret);
170 statusPrint(stderr, &status); statusFree(&status);
171 return(i);
172 }
173 i++; if((ret=test_dcmVRVLength(&status))!=0) {
174 fprintf(stderr, "failed (%d).\n", ret);
175 statusPrint(stderr, &status); statusFree(&status);
176 return(i);
177 }
178 i++; if((ret=test_dcmVRReserved(&status))!=0) {
179 fprintf(stderr, "failed (%d).\n", ret);
180 statusPrint(stderr, &status); statusFree(&status);
181 return(i);
182 }
183 i++; if((ret=test_dcmDA2intl(&status))!=0) {
184 fprintf(stderr, "failed (%d).\n", ret);
185 statusPrint(stderr, &status); statusFree(&status);
186 return(i);
187 }
188 i++; if((ret=test_dcmTM2intl(&status))!=0) {
189 fprintf(stderr, "failed (%d).\n", ret);
190 statusPrint(stderr, &status); statusFree(&status);
191 return(i);
192 }
193 i++; if((ret=test_dcmDT2intl(&status))!=0) {
194 fprintf(stderr, "failed (%d).\n", ret);
195 statusPrint(stderr, &status); statusFree(&status);
196 return(i);
197 }
198 /* dcmdictionary */
199 i++; if((ret=test_dcmDictSize(&status))!=0) {
200 fprintf(stderr, "failed (%d).\n", ret);
201 statusPrint(stderr, &status); statusFree(&status);
202 return(i);
203 }
204 i++; if((ret=test_dcmDictIndexTag(&status))!=0) {
205 fprintf(stderr, "failed (%d).\n", ret);
206 statusPrint(stderr, &status); statusFree(&status);
207 return(i);
208 }
209 i++; if((ret=test_dcmDictIndexVR(&status))!=0) {
210 fprintf(stderr, "failed (%d).\n", ret);
211 statusPrint(stderr, &status); statusFree(&status);
212 return(i);
213 }
214 i++; if((ret=test_dcmDictIndexType(&status))!=0) {
215 fprintf(stderr, "failed (%d).\n", ret);
216 statusPrint(stderr, &status); statusFree(&status);
217 return(i);
218 }
219 i++; if((ret=test_dcmDictIndexDescr(&status))!=0) {
220 fprintf(stderr, "failed (%d).\n", ret);
221 statusPrint(stderr, &status); statusFree(&status);
222 return(i);
223 }
224 i++; if((ret=test_dcmDictFindTag(&status))!=0) {
225 fprintf(stderr, "failed (%d).\n", ret);
226 statusPrint(stderr, &status); statusFree(&status);
227 return(i);
228 }
229 /* dcmfile */
230 i++; if((ret=test_dcmSameImage(&status))!=0) {
231 fprintf(stderr, "failed (%d).\n", ret);
232 statusPrint(stderr, &status); statusFree(&status);
233 return(i);
234 }
235 i++; if((ret=test_dcmFileList(&status))!=0) {
236 fprintf(stderr, "failed (%d).\n", ret);
237 statusPrint(stderr, &status); statusFree(&status);
238 return(i);
239 }
240 i++; if((ret=test_dcmFileRemove(&status))!=0) {
241 fprintf(stderr, "failed (%d).\n", ret);
242 statusPrint(stderr, &status); statusFree(&status);
243 return(i);
244 }
245 /* dcmio */
246 i++; if((ret=test_dcmVerifyMagic(&status))!=0) {
247 fprintf(stderr, "failed (%d).\n", ret);
248 statusPrint(stderr, &status); statusFree(&status);
249 return(i);
250 }
251 i++; if((ret=test_dcmReadTransferSyntaxUID(&status))!=0) {
252 fprintf(stderr, "failed (%d).\n", ret);
253 statusPrint(stderr, &status); statusFree(&status);
254 return(i);
255 }
256 i++; if((ret=test_dcmReadFileTag(&status))!=0) {
257 fprintf(stderr, "failed (%d).\n", ret);
258 statusPrint(stderr, &status); statusFree(&status);
259 return(i);
260 }
261 i++; if((ret=test_dcmWriteFileTag(&status))!=0) {
262 fprintf(stderr, "failed (%d).\n", ret);
263 statusPrint(stderr, &status); statusFree(&status);
264 return(i);
265 }
266 i++; if((ret=test_dcmWriteFileSQDelimItem(&status))!=0) {
267 fprintf(stderr, "failed (%d).\n", ret);
268 statusPrint(stderr, &status); statusFree(&status);
269 return(i);
270 }
271 i++; if((ret=test_dcmWriteFileSQItemDelimTag(&status))!=0) {
272 fprintf(stderr, "failed (%d).\n", ret);
273 statusPrint(stderr, &status); statusFree(&status);
274 return(i);
275 }
276 i++; if((ret=test_dcmReadFileVRVL(&status))!=0) {
277 fprintf(stderr, "failed (%d).\n", ret);
278 statusPrint(stderr, &status); statusFree(&status);
279 return(i);
280 }
281 i++; if((ret=test_dcmWriteFileVRVL(&status))!=0) {
282 fprintf(stderr, "failed (%d).\n", ret);
283 statusPrint(stderr, &status); statusFree(&status);
284 return(i);
285 }
286 i++; if((ret=test_dcmFileRead(&status))!=0) {
287 fprintf(stderr, "failed (%d).\n", ret);
288 statusPrint(stderr, &status); statusFree(&status);
289 return(i);
290 }
291 i++; if((ret=test_dcmFileWrite(&status))!=0) {
292 fprintf(stderr, "failed (%d).\n", ret);
293 statusPrint(stderr, &status); statusFree(&status);
294 return(i);
295 }
296 /* dcmmatrix */
297 i++; if((ret=test_dcmmatrixInit(&status))!=0) {
298 fprintf(stderr, "failed (%d).\n", ret);
299 statusPrint(stderr, &status); statusFree(&status);
300 return(i);
301 }
302 i++; if((ret=test_dcmmatrixFree(&status))!=0) {
303 fprintf(stderr, "failed (%d).\n", ret);
304 statusPrint(stderr, &status); statusFree(&status);
305 return(i);
306 }
307 i++; if((ret=test_dcmmlInit(&status))!=0) {
308 fprintf(stderr, "failed (%d).\n", ret);
309 statusPrint(stderr, &status); statusFree(&status);
310 return(i);
311 }
312 i++; if((ret=test_dcmmlFree(&status))!=0) {
313 fprintf(stderr, "failed (%d).\n", ret);
314 statusPrint(stderr, &status); statusFree(&status);
315 return(i);
316 }
317 i++; if((ret=test_dcmmlAllocate(&status))!=0) {
318 fprintf(stderr, "failed (%d).\n", ret);
319 statusPrint(stderr, &status); statusFree(&status);
320 return(i);
321 }
322 i++; if((ret=test_dcmMListRead(&status))!=0) {
323 fprintf(stderr, "failed (%d).\n", ret);
324 statusPrint(stderr, &status); statusFree(&status);
325 return(i);
326 }
327 i++; if((ret=test_dcmmlSortByPlane(&status))!=0) {
328 fprintf(stderr, "failed (%d).\n", ret);
329 statusPrint(stderr, &status); statusFree(&status);
330 return(i);
331 }
332 /* dcmimage */
333 i++; if((ret=test_dcmImgIsotope(&status))!=0) {
334 fprintf(stderr, "failed (%d).\n", ret);
335 statusPrint(stderr, &status); statusFree(&status);
336 return(i);
337 }
338 i++; if((ret=test_dcmImgPos(&status))!=0) {
339 fprintf(stderr, "failed (%d).\n", ret);
340 statusPrint(stderr, &status); statusFree(&status);
341 return(i);
342 }
343 i++; if((ret=test_dcmImgDim(&status))!=0) {
344 fprintf(stderr, "failed (%d).\n", ret);
345 statusPrint(stderr, &status); statusFree(&status);
346 return(i);
347 }
348 i++; if((ret=test_dcmImgPxlsize(&status))!=0) {
349 fprintf(stderr, "failed (%d).\n", ret);
350 statusPrint(stderr, &status); statusFree(&status);
351 return(i);
352 }
353 i++; if((ret=test_dcmImgOrient(&status))!=0) {
354 fprintf(stderr, "failed (%d).\n", ret);
355 statusPrint(stderr, &status); statusFree(&status);
356 return(i);
357 }
358 i++; if((ret=test_dcmImgXform(&status))!=0) {
359 fprintf(stderr, "failed (%d).\n", ret);
360 statusPrint(stderr, &status); statusFree(&status);
361 return(i);
362 }
363 i++; if((ret=test_dcmXformToQuatern(&status))!=0) {
364 fprintf(stderr, "failed (%d).\n", ret);
365 statusPrint(stderr, &status); statusFree(&status);
366 return(i);
367 }
368
369
370#if(1)
371 i++; if((ret=test_dcmTestFile(&status))!=0) {
372 fprintf(stderr, "failed (%d).\n", ret);
373 statusPrint(stderr, &status); statusFree(&status);
374 return(i);
375 }
376#endif
377
378
379
380 if(verbose>0) printf("\nAll tests passed.\n\n");
381 statusFree(&status);
382 return(0);
383}
384/*****************************************************************************/
385
386/*****************************************************************************/
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 statusPrint(FILE *fp, TPCSTATUS *s)
Definition statusmsg.c:82
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
void statusFree(TPCSTATUS *s)
Definition statusmsg.c:126
int verbose
Verbose level, used by statusPrint() etc.
Header file for libtpcdcm.
Header file for library libtpcextensions.